clarinsi / classla

CLASSLA Fork of the Official Stanford NLP Python Library for Many Human Languages
https://www.clarin.si/info/k-centre/
Other
38 stars 19 forks source link

word length limits, classla hanging up on really long words #25

Closed itzsimpl closed 2 years ago

itzsimpl commented 2 years ago

Classla 1.0.2, with obeliks 1.0.6 hangs up on really long words. Example:

>>> from classla import Pipeline
>>> nlp=Pipeline(lang='sl',processors='tokenize,pos')
...
>>> text="Torej najdaljše besede v različnih jezikih (ob tem naj poudarimo, da je prav letos leto jezikov): španska - superextraordinarisimo (22 črk), izreden; francoska - anticonstitutionnellement (25 črk), protiustavno; hrvaška - prijestolonaslijednikovica (26 črk), prestolonaslednikova soproga; italijanska - precipitevolissimevolmente (26 črk), kar se da na hitro, na vrat na nos; portugalska - inconstitucionalissinamente (27 črk), najvišja stopnja protiustavnosti; islandska - haestaréttarmálaflutningsmaôur (29 črk), pravdnik vrhovnega sodišča; ruska - rentgenoelektrokardiografičeskogo (33 črk), radioelektrokardiografskega; japonska - ryagu-no-otohime-no-motoyui-no-kirikazushi (36 črk), vrsta morske trave, v dobesednem prevodu koščki papirnih pramenov las podvodne vile; madžarska - megszentségtelenithetelenségeskedéseitekéert (44 črk), za vaša neoskrunljiva dejanja; turška - Cekoslovakyalilastiramadiklarimizdanmiymissiniz (47 črk), Niste vi iz skupine oseb, ki se baje ne morejo počehoslovakiti?; nizozemska - kindercarnavalsoptochtvoorbereidingswerkzaamheden (49 črk), priprave za povorko otroškega karnevala; mohawk - tkanuhstasrihsranuhwe'tsraaksahsrakaratattsrayeri (50 črk), hvaljenje zla, če ti je všeč, da najdeš hišo v redu (ta jezik tvori neomejeno dolge besede, zgornja je samo primer takšne rabe), waleška - Llanfairpwilgwyngyllgogerychwyrndrobwillantysiliogogogoch (58 črk), naslov neke železniške postaje v Walesu; nemška - Donaudampfschiffahrtselektrizitaetenhauptbetriebswerkbauunterbeamtengeselschaft (81 črk), klub za nižje častnike iz glavnega urada vodstva elektroslužbe na donavskih parnikih (ime predvojnega kluba na Dunaju); najdaljša beseda, ki je tudi v dnevni rabi, je Kraftfahrzeugreparaturwerkstätten (33 črk ali 34, če pišemo ä za ae, ki pomeni popravljalnice motornih vozil); švedska - nordöstersjökustartilleriflygspaningsimulatoranläggningsmaterielunderhallsuppföljningssystemdiskussionsinläggsforberedelsearbeten (130 črk), pripravljalno delo za prispevek k razpravi o varovalnem sistemu vzdrževanja materiala letalske kontrolne naprave v severozhodnem delu obalne baltiške artilerije."
>>> nlp(text)
lkrsnik commented 2 years ago

This is an issue related to obeliks 1.0.6, that was resolved in a later version. Unfortunately, classla 1.0.2 has issues with later versions of obeliks. To solve this, you can either wait for upcoming classla release or use one of the following workarounds with current version:

  1. Use reldi tokenizer instead of obeliks:
    import classla
    text = "..."
    nlp = classla.Pipeline(lang='sl',processors='tokenize,pos', tokenize_library='reldi')
    nlp(text)
  2. Manually annotate text with latest obeliks and use pretokenized tag (for this you need to have latest version of obeliks - 1.1.1):
    import obeliks
    import classla
    text = "..."
    pretokenized_text = obeliks.run(text, conllu=True)
    nlp = classla.Pipeline(lang='sl',processors='tokenize,pos', tokenize_pretokenized='conllu')
    nlp(pretokenized_text)
lkrsnik commented 2 years ago

New release of classla (v1.1.0) now works with latest obeliks.