Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Optionally exclude some special characters from being filtered #19

Open
kivilahtio opened this issue Sep 16, 2024 · 1 comment
Open

Comments

@kivilahtio
Copy link

For example
15 § Rakennusjärjestyksen hyväksyminen

is tokenized to
15 rakennusjärjestys hyväksyä
which is all good.

However it is impossible to search from the search index using search term
§
because I presume it is filtered out along with lowercasing and punctuation filtering.
Is it possible to affect the way punctuations are filtered?

I guess we could add the character § here to include it in the tokenizations, but then it would cause problems in cases where § is mistyped, for example
15 §Rakennusjärjestyksen
Could not be understood by the Voikko -stemming rules.

Have you encountered similar requests from your clients?
Any advice on how this could be achieved in such a way that the change could be incorporated in this plugin?

@komu
Copy link
Member

komu commented Sep 16, 2024

Moi,

(I'll answer in Finnish, it feels a bit too silly to discuss about Finnish tokenization with a Finn using English.)

Kiitos issuesta, hyviä huomioita. Toistaiseksi sen enempää Kansalliskirjaston Digi kuin suomi.fi (muihin käyttäjiin ei ole oikein näkyvyyttä) eivät ole valittaneet nykyisestä naivista tokenisoinnista, mutta kyllähän tuossa selvästi olisi kohtuu vähällä vaivalla lisättävissä paljon älykkyyttä.

Perusongelma lienee se, että kun toi nykyinen FinnishTokenizer on vain suoraviivainen CharTokenizer, niin se ei oikein voi tehdä mitään älykästä: merkki joko on osa tokenia tai ei, ilman sen kummempaa kontekstia. Tässä tapauksessa varmaan haluttaisiin vähintäänkin erotella noita kahteen luokkaan: toisaalta sanan muodostavat merkit (kirjaimet, numerot ja yhdysviiva) ja toisaalta erikoismerkit jotka halutaan säilyttää, mutta joita ei haluta osaksi sanaa. Eli '§' olisi "mielenkiintoinen" merkki, joka halutaan säilyttää, mutta kuitenkin sellainen jota ei haluta osaksi sanaa. Näin §Rakennusjärjestyksen parsittaisiin kahtena tokenina.

Varmaan tähän voisi listata esimerkkejä tapauksista jotka tällä hetkellä tokenisoituvat selvästi väärin ja siitä miten haluaisi niiden tokenisoituvan, niin voisi sitten sen pohjalta ruveta hahmottelemaan sitä miten filtterin pitäisi toimia.

Eli tyyliin:

Teksti Tokenit
15 § Rakennusjärjestyksen hyväksyminen 15, §, Rakennusjärjestyksen, hyväksyminen
§Rakennusjärjestyksen §, Rakennusjärjestyksen
100% 100, %

jne.

Joka tapauksessa tuota FinnishTokenizeriahan ei ole pakko käyttää. Voit laittaa varsinaisen filtterin eteen minkä tahansa muunkin tokenizerin, eli yrittää esim. konffata jonkun ES:n pattern-tokenizereista tuottamaan järkeviä tokeneita. Tämä voisikin olla hyvä tapa protoilla järkeviä sääntöjä; jos sitten löytyy joku hyvä konfiguraatio, niin sen voisi tarjota pluginissa oletuksena tai optionaalisena kaikille käyttäjille.

Mutta jos on kiinnostusta pohtia tätä ongelmaa, niin ehdottomasti täältä päästä löytyy kiinnostusta viedä tätä eteenpäin.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants