pd3f / dehyphen

📜 Dehyphenation of broken text (mainly German), i.e., extracted from a PDF
GNU General Public License v3.0
38 stars 4 forks source link

text_to_format not found #2

Open nise opened 2 years ago

nise commented 2 years ago

In the provided examples a method 'text_to_format' is mentioned that was not imported.

NameError: name 'text_to_format' is not defined

alexchaichan commented 2 years ago

Hey, same problem,

you just need to import the function aswell

from dehyphen import FlairScorer, text_to_format

To make the example work you have to use it like that:

from dehyphen import FlairScorer, text_to_format
scorer = FlairScorer(lang="de")

some_german_text = """Zwar wird durch die Einführung eines eigenen Strafgesetzes die Bedeutung der finan-
ziellen Interessen der Union gewiss unterstrichen, dennoch erscheint die Aufspaltung
des strafrechtlichen Vermögensschutzes zweifelhaft, insbesondere soweit es densel-
ben Schutzgegenstand, nämlich die vermögensrelevanten Interessen der Union be-
trifft. Zum einen wird es den Normunterworfenen ohne Not erschwert, die zu befolgen-
den Strafgesetze zu erfassen. Zum anderen ergeben sich potentielle Auslegungsdif-

ferenzen durch die Verwendung teilweise abweichender Terminologie (finanzielle In-
teressen vs. Vermögen). Schließlich wird der Schutz besagter Interessen ohnedies
bislang innerhalb des StGB gewährleistet. Daher empfiehlt es sich u.E., sämtliche Re-
gelungen des RegE in das StGB zu integrieren, soweit entsprechende Neuregelungen
überhaupt erforderlich sind. Hierdurch wird sich auch eine klarere Trennung von Straf-
recht und Verwaltungsrecht erreichen lassen.

Das Erfolgsverständnis entspricht daher eher dem wesentlich weiteren Betrugsbegriff
bspw. des US-amerikanischen Rechts (Federal Law bspw. Fraud, Defraud, Wire-
Fraud, Bank-Fraud, 18.U.S.C. §1341 ff.(2016)) , die teilweise auch ganz auf einen
Schaden verzichten. Fraud erfasst auch viele untreue- und unterschlagungsähnliche
Verhaltensweisen sowie betrügerische Verfügungen als solche. Auch andere EU-
Staaten, wie bspw. Polen, liegen im Hinblick auf den Erfolg näher bei der Richtlinie
als bei der deutschen Schadensdogmatik.
"""

special_format = text_to_format(some_german_text)
fixed_hyphens = scorer.dehyphen(special_format)

# checks if two paragraphs can be joined, useful to, e.g., reverse page breaks.
joined_paragraph1 = scorer.is_split_paragraph(fixed_hyphens[-3], fixed_hyphens[-2])
joined_paragraph2 = scorer.is_split_paragraph(joined_paragraph1, fixed_hyphens[-1])

print(joined_paragraph2)
Manamama commented 1 week ago

I spent 3 hours before I found it. Even AIs were useless here to figure it out.
FYI this finally works to recreate the full source sentence:

from dehyphen import FlairScorer, text_to_format

# Initialize the scorer for German
scorer = FlairScorer(lang="de")

# Original hyphenated German text
some_german_text = """Zwar wird durch die Einführung eines eigenen Strafgesetzes die Bedeutung der finan-
ziellen Interessen der Union gewiss unterstrichen, dennoch erscheint die Aufspaltung
des strafrechtlichen Vermögensschutzes zweifelhaft, insbesondere soweit es densel-
ben Schutzgegenstand, nämlich die vermögensrelevanten Interessen der Union be-
trifft. Zum einen wird es den Normunterworfenen ohne Not erschwert, die zu befolgen-
den Strafgesetze zu erfassen. Zum anderen ergeben sich potentielle Auslegungsdif-
ferenzen durch die Verwendung teilweise abweichender Terminologie (finanzielle In-
teressen vs. Vermögen). Schließlich wird der Schutz besagter Interessen ohnedies
bislang innerhalb des StGB gewährleistet. Daher empfiehlt es sich u.E., sämtliche Re-
gelungen des RegE in das StGB zu integrieren, soweit entsprechende Neuregelungen
überhaupt erforderlich sind. Hierdurch wird sich auch eine klarere Trennung von Straf-
recht und Verwaltungsrecht erreichen lassen.
Das Erfolgsverständnis entspricht daher eher dem wesentlich weiteren Betrugsbegriff
bspw. des US-amerikanischen Rechts (Federal Law bspw. Fraud, Defraud, Wire-
Fraud, Bank-Fraud, 18.U.S.C. §1341 ff.(2016)) , die teilweise auch ganz auf einen
Schaden verzichten. Fraud erfasst auch viele untreue- und unterschlagungsähnliche
Verhaltensweisen sowie betrügerische Verfügungen als solche. Auch andere EU-
Staaten, wie bspw. Polen, liegen im Hinblick auf den Erfolg näher bei der Richtlinie
als bei der deutschen Schadensdogmatik.
"""

# Step 1: Format the input text using text_to_format
special_format = text_to_format(some_german_text)

# Step 2: Dehyphenate the formatted text
fixed_hyphens = scorer.dehyphen(special_format)

# Step 3: Flatten the nested list structure
def flatten_list(nested_list):
    flat_list = []
    for item in nested_list:
        if isinstance(item, list):
            flat_list.extend(flatten_list(item))  # Recursively flatten nested lists
        else:
            flat_list.append(item)
    return flat_list

# Apply the function to flatten everything
flat_output = flatten_list(fixed_hyphens)
final_output = ' '.join(flat_output)  # Join all flattened elements into a single string

# Step 4: Print results
print("Dehyphenated Text:\n", final_output)

Test:

In [35]: from dehyphen import FlairScorer, text_to_format
    ...: 
    ...: # Initialize the scorer for German
    ...: scorer = FlairScorer(lang="de")
    ...: 
    ...: # Original hyphenated German text
    ...: some_german_text = """Zwar wird durch die Einführung eines eigenen Strafgesetzes die Bedeutung der finan-
    ...: ziellen Interessen der Union gewiss unterstrichen, dennoch erscheint die Aufspaltung
    ...: des strafrechtlichen Vermögensschutzes zweifelhaft, insbesondere soweit es densel-
    ...: ben Schutzgegenstand, nämlich die vermögensrelevanten Interessen der Union be-
    ...: trifft. Zum einen wird es den Normunterworfenen ohne Not erschwert, die zu befolgen-
    ...: den Strafgesetze zu erfassen. Zum anderen ergeben sich potentielle Auslegungsdif-
    ...: ferenzen durch die Verwendung teilweise abweichender Terminologie (finanzielle In-
    ...: teressen vs. Vermögen). Schließlich wird der Schutz besagter Interessen ohnedies
    ...: bislang innerhalb des StGB gewährleistet. Daher empfiehlt es sich u.E., sämtliche Re-
    ...: gelungen des RegE in das StGB zu integrieren, soweit entsprechende Neuregelungen
    ...: überhaupt erforderlich sind. Hierdurch wird sich auch eine klarere Trennung von Straf-
    ...: recht und Verwaltungsrecht erreichen lassen.
    ...: Das Erfolgsverständnis entspricht daher eher dem wesentlich weiteren Betrugsbegriff
    ...: bspw. des US-amerikanischen Rechts (Federal Law bspw. Fraud, Defraud, Wire-
    ...: Fraud, Bank-Fraud, 18.U.S.C. §1341 ff.(2016)) , die teilweise auch ganz auf einen
    ...: Schaden verzichten. Fraud erfasst auch viele untreue- und unterschlagungsähnliche
    ...: Verhaltensweisen sowie betrügerische Verfügungen als solche. Auch andere EU-
    ...: Staaten, wie bspw. Polen, liegen im Hinblick auf den Erfolg näher bei der Richtlinie
    ...: als bei der deutschen Schadensdogmatik.
    ...: """
    ...: 
    ...: # Step 1: Format the input text using text_to_format
    ...: special_format = text_to_format(some_german_text)
    ...: 
    ...: # Step 2: Dehyphenate the formatted text
    ...: fixed_hyphens = scorer.dehyphen(special_format)
    ...: 
    ...: # Step 3: Flatten the nested list structure
    ...: def flatten_list(nested_list):
    ...:     flat_list = []
    ...:     for item in nested_list:
    ...:         if isinstance(item, list):
    ...:             flat_list.extend(flatten_list(item))  # Recursively flatten nested lists
    ...:         else:
    ...:             flat_list.append(item)
    ...:     return flat_list
    ...: 
    ...: # Apply the function to flatten everything
    ...: flat_output = flatten_list(fixed_hyphens)
    ...: final_output = ' '.join(flat_output)  # Join all flattened elements into a single string
    ...: 
    ...: # Step 4: Print results
    ...: print("Dehyphenated Text:\n", final_output)
    ...: 
... /.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)
Dehyphenated Text:
... 
In [36]: 

Text:

Zwar wird durch die Einführung eines eigenen Strafgesetzes die Bedeutung der finanziellen Interessen der Union gewiss unterstrichen, dennoch erscheint die Aufspaltung des strafrechtlichen Vermögensschutzes zweifelhaft, insbesondere soweit es denselben Schutzgegenstand, nämlich die vermögensrelevanten Interessen der Union betrifft. Zum einen wird es den Normunterworfenen ohne Not erschwert, die zu befolgenden Strafgesetze zu erfassen. Zum anderen ergeben sich potentielle Auslegungsdifferenzen durch die Verwendung teilweise abweichender Terminologie (finanzielle Interessen vs. Vermögen). Schließlich wird der Schutz besagter Interessen ohnedies bislang innerhalb des StGB gewährleistet. Daher empfiehlt es sich u.E., sämtliche Regelungen des RegE in das StGB zu integrieren, soweit entsprechende Neuregelungen überhaupt erforderlich sind. Hierdurch wird sich auch eine klarere Trennung von Strafrecht und Verwaltungsrecht erreichen lassen. Das Erfolgsverständnis entspricht daher eher dem wesentlich weiteren Betrugsbegriff bspw. des US-amerikanischen Rechts (Federal Law bspw. Fraud, Defraud, Wire-Fraud, Bank-Fraud, 18.U.S.C. §1341 ff.(2016)) , die teilweise auch ganz auf einen Schaden verzichten. Fraud erfasst auch viele untreue- und unterschlagungsähnliche Verhaltensweisen sowie betrügerische Verfügungen als solche. Auch andere EU-Staaten, wie bspw. Polen, liegen im Hinblick auf den Erfolg näher bei der Richtlinie als bei der deutschen Schadensdogmatik.