You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
import sys
from dehyphen import FlairScorer, text_to_format
import os
def flatten_list(nested_list):
"""Recursively flatten a nested list into a single list while preserving EOLs at the middle level."""
flat_list = []
# Outer loop for the first level
for outer_item in nested_list:
# Middle loop for the second level
flat_list.append("\n") # Add a single EOL for separation
for middle_item in outer_item:
# Innermost loop for the third level
for word in middle_item:
flat_list.append(word) # Append each word to the flat list
return flat_list
def main(input_file):
# Initialize the scorer for German
scorer = FlairScorer(lang="de")
# Read the input file
with open(input_file, 'r', encoding='utf-8') as file:
polish_text = file.read()
# Format the input text
special_format = text_to_format(polish_text)
# Remove hyphens from the text
fixed_hyphens = scorer.dehyphen(special_format)
print(fixed_hyphens)
# Flatten the nested list of characters into a single string
if isinstance(fixed_hyphens, list):
# Use the flattening function to get a flat list of strings
flat_output = flatten_list(fixed_hyphens)
flattened_text = ' '.join(flat_output) # Join all flattened elements into a single string
else:
flattened_text = fixed_hyphens # In case it's already a string
# Create output file name based on input file name
base_name = os.path.basename(input_file)
output_file = os.path.join(os.path.dirname(input_file), f"{os.path.splitext(base_name)[0]}_unhyphenated.txt")
# Write the fixed text to the output file
with open(output_file, 'w', encoding='utf-8') as file:
file.write(flattened_text)
print(f"Unhyphenated text written to {output_file}")
if __name__ == "__main__":
if len(sys.argv) != 2:
print("Usage: python unhyphenate.py <path_to_input_file>")
sys.exit(1)
input_file_path = sys.argv[1]
main(input_file_path)
(adjust the language there by hand - it pulls the right models off Net, at least for now.)
Sample result:
cat ~/Downloads/test_hyphened.txt
W ten sposób szef Reichswehry, a zarazem główny inicjator i wy-
konawca zbrojeń niemieckich, przeciął wszelką na ten temat dyskusję.
Dzięki tego rodzaju opiece i ogromnym kapitałom „Gefu* zdołało
w stosunkowo krótkim czasie, założyć w Rosji sowieckiej wiele fabryk
materiałów wojennych, które, o ironio.... już w kilka lat później, stały
się zakładami macierzystymi dla rozbudowującego się do ogromnych
rozmiarów sowieckiego przemysłu wojennego, skierowanego przeciw
Niemcom. Niektóre z tych fabryk, zorganizowali i kierowali nimi nie-
mieccy fachowcy, że wymienię tu choćby największą z fabryk chemicz-
nych, produkujących przeważnie gazy trujące, p. f. „Persolś, w Trocku,
w gubernii samarskiej, którą zorganizował i urządził słynny producent
gazów trujących inż. Hugo Stoltzenberg, z Hamburga. Również znana
niemiecka fabryka samolotów, Junkersa, zajęła się organizacją i bu-
dową przemysłu lotniczego w Sowietach. Według umowy Junkersa z mi-
nisterstwem Reichswehry, z marca 1922 roku, wspomniana firma zobo-
wiązała się do wyprodukowania na terytorium Rosji sowieckiej 299 „pak*
rocznie — tak bowiem nazwano w umowie z Junkersem nowoczesne Sa-
mołoty myśliwskie z których, w myśl osobnego porozumienia Z So-
wiecką misją handlową w Berlinie, 60 „pak* rocznie przeznaczonych
było dla Rosji, zaś 259 dla Reichswehry. Fakt zawarcia i wykonywa-
nia tej umowy, wyszedł na jaw dopiero jesienią 1924 r. kiedy to między
firmą Junkers a ministerstwem Reichswehry doszło do poważnych nie-
porozumień na tle finansowym. Owe nieporozumienia odbiły się później
silnym echem w Reichstagu. Mianowicie na jednym z posiedzeń komisji
budżetowej, poseł socjalistyczny Kiinstler odczytał pismo generała von
Seeckta, skierowane do firmy Junkers, w którym autor — szef Reichs-
wehry — uginał się przed żądaniami prywatnej firmy, aby uniknąć mię-
dzynarodowego skandalu i zataić przed światem zbrojenia niemieckie.
[Notice the double EOL above, retained below.]
time python ~/Documents/Synchronized_with_Online/Code_snippets/Ubuntu/unhyphenate.py ~/Downloads/test_hyphened.txt
~/.local/lib/python3.10/site-packages/flair/models/language_model.py:190: FutureWarning: You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for `weights_only` will be flipped to `True`. This limits the functions that could be executed during unpickling. Arbitrary objects will no longer be allowed to be loaded via this mode unless they are explicitly allowlisted by the user via `torch.serialization.add_safe_globals`. We recommend you start setting `weights_only=True` for any use case where you don't have full control of the loaded file. Please open an issue on GitHub for any issues related to this experimental feature.
state = torch.load(str(model_file), map_location=flair.device)
[[['W', 'ten', 'sposób', 'szef', 'Reichswehry,', 'a', 'zarazem', 'główny', 'inicjator', 'i '], ['wykonawca', 'zbrojeń', 'niemieckich,', 'przeciął', 'wszelką', 'na', 'ten', 'temat', 'dyskusję.']], [['Dzięki', 'tego', 'rodzaju', 'opiece', 'i', 'ogromnym', 'kapitałom', '„Gefu*', 'zdołało '], ['w', 'stosunkowo', 'krótkim', 'czasie,', 'założyć', 'w', 'Rosji', 'sowieckiej', 'wiele', 'fabryk '], ['materiałów', 'wojennych,', 'które,', 'o', 'ironio....', 'już', 'w', 'kilka', 'lat', 'później,', 'stały '], ['się', 'zakładami', 'macierzystymi', 'dla', 'rozbudowującego', 'się', 'do', 'ogromnych '], ['rozmiarów', 'sowieckiego', 'przemysłu', 'wojennego,', 'skierowanego', 'przeciw '], ['Niemcom.', 'Niektóre', 'z', 'tych', 'fabryk,', 'zorganizowali', 'i', 'kierowali', 'nimi '], ['niemieccy', 'fachowcy,', 'że', 'wymienię', 'tu', 'choćby', 'największą', 'z', 'fabryk '], ['chemicznych,', 'produkujących', 'przeważnie', 'gazy', 'trujące,', 'p.', 'f.', '„Persolś,', 'w', 'Trocku, '], ['w', 'gubernii', 'samarskiej,', 'którą', 'zorganizował', 'i', 'urządził', 'słynny', 'producent '], ['gazów', 'trujących', 'inż.', 'Hugo', 'Stoltzenberg,', 'z', 'Hamburga.', 'Również', 'znana '], ['niemiecka', 'fabryka', 'samolotów,', 'Junkersa,', 'zajęła', 'się', 'organizacją', 'i '], ['budową', 'przemysłu', 'lotniczego', 'w', 'Sowietach.', 'Według', 'umowy', 'Junkersa', 'z '], ['ministerstwem', 'Reichswehry,', 'z', 'marca', '1922', 'roku,', 'wspomniana', 'firma '], ['zobowiązała', 'się', 'do', 'wyprodukowania', 'na', 'terytorium', 'Rosji', 'sowieckiej', '299', '„pak* '], ['rocznie', '—', 'tak', 'bowiem', 'nazwano', 'w', 'umowie', 'z', 'Junkersem', 'nowoczesne '], ['Samołoty', 'myśliwskie', 'z', 'których,', 'w', 'myśl', 'osobnego', 'porozumienia', 'Z '], ['Sowiecką', 'misją', 'handlową', 'w', 'Berlinie,', '60', '„pak*', 'rocznie', 'przeznaczonych '], ['było', 'dla', 'Rosji,', 'zaś', '259', 'dla', 'Reichswehry.', 'Fakt', 'zawarcia', 'i '], ['wykonywania', 'tej', 'umowy,', 'wyszedł', 'na', 'jaw', 'dopiero', 'jesienią', '1924', 'r.', 'kiedy', 'to', 'między '], ['firmą', 'Junkers', 'a', 'ministerstwem', 'Reichswehry', 'doszło', 'do', 'poważnych', 'nie- '], ['porozumień', 'na', 'tle', 'finansowym.', 'Owe', 'nieporozumienia', 'odbiły', 'się', 'później '], ['silnym', 'echem', 'w', 'Reichstagu.', 'Mianowicie', 'na', 'jednym', 'z', 'posiedzeń', 'komisji '], ['budżetowej,', 'poseł', 'socjalistyczny', 'Kiinstler', 'odczytał', 'pismo', 'generała', 'von '], ['Seeckta,', 'skierowane', 'do', 'firmy', 'Junkers,', 'w', 'którym', 'autor', '—', 'szef '], ['Reichswehry', '—', 'uginał', 'się', 'przed', 'żądaniami', 'prywatnej', 'firmy,', 'aby', 'uniknąć '], ['międzynarodowego', 'skandalu', 'i', 'zataić', 'przed', 'światem', 'zbrojenia', 'niemieckie.']]]
Unhyphenated text written to ~/Downloads/test_hyphened_unhyphenated.txt
real 0m9.986s
user 0m28.122s
sys 0m5.254s
cat ~/Downloads/test_hyphened_unhyphenated.txt
W ten sposób szef Reichswehry, a zarazem główny inicjator i wykonawca zbrojeń niemieckich, przeciął wszelką na ten temat dyskusję.
Dzięki tego rodzaju opiece i ogromnym kapitałom „Gefu* zdołało w stosunkowo krótkim czasie, założyć w Rosji sowieckiej wiele fabryk materiałów wojennych, które, o ironio.... już w kilka lat później, stały się zakładami macierzystymi dla rozbudowującego się do ogromnych rozmiarów sowieckiego przemysłu wojennego, skierowanego przeciw Niemcom. Niektóre z tych fabryk, zorganizowali i kierowali nimi niemieccy fachowcy, że wymienię tu choćby największą z fabryk chemicznych, produkujących przeważnie gazy trujące, p. f. „Persolś, w Trocku, w gubernii samarskiej, którą zorganizował i urządził słynny producent gazów trujących inż. Hugo Stoltzenberg, z Hamburga. Również znana niemiecka fabryka samolotów, Junkersa, zajęła się organizacją i budową przemysłu lotniczego w Sowietach. Według umowy Junkersa z ministerstwem Reichswehry, z marca 1922 roku, wspomniana firma zobowiązała się do wyprodukowania na terytorium Rosji sowieckiej 299 „pak* rocznie — tak bowiem nazwano w umowie z Junkersem nowoczesne Samołoty myśliwskie z których, w myśl osobnego porozumienia Z Sowiecką misją handlową w Berlinie, 60 „pak* rocznie przeznaczonych było dla Rosji, zaś 259 dla Reichswehry. Fakt zawarcia i wykonywania tej umowy, wyszedł na jaw dopiero jesienią 1924 r. kiedy to między firmą Junkers a ministerstwem Reichswehry doszło do poważnych nie- porozumień na tle finansowym. Owe nieporozumienia odbiły się później silnym echem w Reichstagu. Mianowicie na jednym z posiedzeń komisji budżetowej, poseł socjalistyczny Kiinstler odczytał pismo generała von Seeckta, skierowane do firmy Junkers, w którym autor — szef Reichswehry — uginał się przed żądaniami prywatnej firmy, aby uniknąć międzynarodowego skandalu i zataić przed światem zbrojenia niemieckie.
The text was updated successfully, but these errors were encountered:
Manamama
changed the title
Does not work with e.g. Polish
Does not work with e.g. Polish or even in German
Oct 9, 2024
Manamama
changed the title
Does not work with e.g. Polish or even in German
How to make it work with e.g. Polish or German: full script
Oct 10, 2024
Solved it after 5 hours only due to #2 tip.
This code works:
(adjust the language there by hand - it pulls the right models off Net, at least for now.)
Sample result:
[Notice the double EOL above, retained below.]
The text was updated successfully, but these errors were encountered: