Ragozó program

Fórumok

Üdv!

Van-e olyan program, és ha igen, akkor melyik, amelyik képes a magyar nyelv szerinti ragozásra? Azaz ha megadott egy szót, akkor a kért raggal ellátja, pl. alma + tárgyrag = almát; alma +banben = almában.

Ha a programhoz lenne parancssoros felület, a legjobb lenne, de ha csak lib van, ahhoz talán tudok parancssoros felületet eszkábálni (ha más nem, valami AI segítségével, ha túl ismeretlen és nehéz a nyelv).

Köszönöm!

Hozzászólások

Szerkesztve: 2025. 04. 19., szo – 18:12

Hunspell + unmunch? Mondjuk hirtelen nem látom hogy lehetne megadott ragozást kérni tőle, de ha tényleg nincs ilyen talán egyszerűbb is elindulni egy már meglévő lib alapján. (Egy 2023-as cikk alapján lehet, hogy ma már tényleg egy AI modell a jó megoldás erre.)

Én sem használtam, a hunspell-tools csomag tartalmának kellene lennie, de kicsit utánanéztem és nem tűnik paraméterezhetőnek. Szűrni az általa dobott listát mondjuk grep-pel meg nem tűnik egy túl megbízható útnak. A cikkben említett modell elméletileg paraméterezhető adott ragra amire szükség van.

Huptárs oroszgy -nek van egy NLP-je (HuSpaCy*:https://github.com/huspacy/huspacy). A hup fiókját néztem, nem ír aktívan, talán read only módban még szokott erre járni. Régen próbaképpen teszteltem, visszafele jól működött (vagyis ragozott alakot ragtalanná alakítottam vele). Nem tudom, a másik irány ami neked kell, működik vagy sem, de nála szerintem érdeklődhetsz

// Happy debugging, suckers
#define true (rand() > 10)

Nem, nincs ilyen program. Akkor lesz, ha írsz egyet magadnak.

Fordítottja létezik, egy ragozott szót felbont alapszóra, és ragokra, de az is sokszor hibázik, pl. hunspell.

Windows 95/98: 32 bit extension and a graphical shell for a 16 bit patch to an 8 bit operating system originally coded for a 4 bit microprocessor, written by a 2 bit company that can't stand 1 bit of competition.”

Mi az a usecase, amihez szükséges ez a funkcionalitás?

Moodle-ba generálok feladatsorokat (matek, fizika; ugyanaz a feladat, csak más számokkal), a körítő szövegben a neveket, tárgyakat, stb. véletlenszerűen választom ki. A feladat szövegében ezek sokszor ragozva kellenek.

Eddig kétféle módszert használtam ennek megoldására: a főnévvel együtt tárolom azt a ragozott alakot is, amelyik a feladat szövegében kell; másik megoldás, hogy figyelek arra, hogy az összes főnévhez ugyanaz a rag passzoljon, és a feladat szövegében ezt illesztem hozzá.

Én dolgozom egy ilyen programon. Egészen jól működik, csak JS-ben van. 

Jelenleg privát repóban van, de ha érdekel a dolog, akkor megosztom, illetve lassan publikálhatnám is, végülis hátha lesz belőle valami. 

De tényleg tudni kéne a use case-t, mert lehet, hogy nem a legmegfelelőbb. 

Hosszú sztori.

Anno az ingatlan.com-nál voltam vezető frontend fejlesztő. Ott volt egy olyanunk, hogy minden városra volt egy SEO oldal, ami kiírta, hogy "Eladó lakást keresel Szegeden?", vagy ilyesmit. Na ezek a ragozott városnevek nálunk is DB-ben voltak tárolva. 

Azon tűnődtem anno, hogy ezt egész biztosan meg lehet oldani csak kliens oldalon. Elvégre 3155 stringről beszélünk, amiknek a ragzozása javarészt hasonló elven történik. Belemásztam a dologba elég mélyen és lepároltam pár nyelvtan-elméleti doktori értekezést és le tudtam szűkíteni a kivételeket néhány tucatra, amik be vannak égetve a kódba. Ebből született a GeoFlector

Ahogy tesztelgettem azt vettem észre, hogy a többi szót is ~60% pontossággal ragozza ezért elhatároztam, hogy megpróbálom felhúzni ezt amennyire lehet. 

Most éppen szöveget próbálok hozzá bányászni, hogy nagy mennyiségű tesztadaton meg tudjam határozni a pontosságát, mert azért vannak benne elég rendesen bénaságok. Ezekért előre is bocsi. 

És nagyon feldobta a kedvemet, hogy valakinek hasznos tud lenni!

Este Claude haverommal írtam egy szkriptet, ami egy analizált korpuszból kigyűjti a megfelelő formátumban a szavakat, még tisztogatom, de csinálok hozzá teszteket.

Sajnos a szótagolás is kicsit móricka: 

getSyllables("rendőrség")                           // ["ren", "dőr", "ség"]
getSyllables("rendőrség", { stopWords: ["rend"] })  // ["rend", "őr", "ség"]

Ehhez nem volt jobb ötletem. 

De majd mondom, hogy mire jutok, ha már van értelmezhető adat! 

lattam fentebb, gondolkoztam is rajta, de nekem ugye ertelmes magyar szovegbol van kb 100GB-nyi (ebbol ugy 10-15GB eleg tiszta, amik foleg konyvek/ujsagcikkek), de abban ragozva vannak a szavak, ehhez meg szotovek kellenenek ha jol ertem? ha megis ez kell akkor odaadom szivesen vagy lefuttatom nalam i9-en amit kell, esetleg meg ssh-t is adhatok a gephez.

de kezdetnek akar a kozel 1 gigas HU wikipedia is megteszi, nem?

https://dumps.wikimedia.org/huwiki/latest/huwiki-latest-pages-articles…

https://attardi.github.io/wikiextractor/

vagy ez meg jobb, csak ezt nem lehet uzleti celra hasznalni:

https://clara.nytud.hu/mnsz2-dev/

Hát vannak gondok. Ráengedtem 74 ezer sorra. Ebből visszafelé elkezdtem nézni:
Eredeti szó: zsúrterítő
Tárgyeset: zsúrterítövet
Többes szám: zsúrterítövek
---------------------
Eredeti szó: Zsuzsa
Tárgyeset: Zsuzsát
Többes szám: Zsuzsak
---------------------
Eredeti szó: Zsuzsanna
Tárgyeset: Zsuzsannát
Többes szám: Zsuzsannak