Üdv!
Van egy adott .odt doksim (de lehetne akar .txt is, mert csak sima szöveg alapvető formázással). Arról szeretnék szóstatisztikát készíteni, magyarul, hogy a szavak milyen gyakran fordulnak elő.
Egy olyan programra lenne szükségem, ami ezt meg tudná csinálni helyettem. Tehát számolja össze, és a végén valamilyen kimeneti fájlba listázza ki nekem, lehetőleg csökkenő/növekvő sorrendben, hogy az adott szavak milyen gyakorisággal fordulnak elő.
Mindenképpen jó lenne, ha nem tenne különbséget a kis- és nagybetűs írás között, esetleg ha valami alapszinten felismerné a ragokat, toldalékokat, az se lenne rossz, de az nem lényeges.
Előre is köszönöm a segítséget.
Ja, lehetőleg Linux alatti megoldások érdekelnek (hogy külön program, parancssoros cucc vagy OpenOffice plugin az lényegtelen), de ha Windows alatti megoldást javasoltok, az se rossz.
- 5370 megtekintés
Hozzászólások
Sima szövegre szűrő:
tr -s " " "\n"|sort|uniq -ci|sort -nr
- A hozzászóláshoz be kell jelentkezni
Ez nem semmi öregem :) Tetszik hogy ilyen szinten tudod alkalmazni a shell-t ;)
Tanulságos... én is köszködtem hasonlóval
- A hozzászóláshoz be kell jelentkezni
Engem is érdekelne ilyen progi akár milyen formában
már a megvalosítási ötletek is jók de nem tudom hol induljak el
köszi
- A hozzászóláshoz be kell jelentkezni
Ez nem jó? Lecserélem a szóközöket újsorra, rendezem, a uniq paranccsal kiszűröm az ismétlődő sorokat (szavakat) és a sorok elé íratom az előfordulások számát, majd rendezem az előfordulások száma szerint.
Az odt néhány XML fájl zip-elve, a content.xml-ből sed-del el lehet távolítani a tag-eket.
- A hozzászóláshoz be kell jelentkezni
ezt terminálba írjam be vagy ez hogy müködik mert nem értem
- A hozzászóláshoz be kell jelentkezni
szia
ez hogy mükődik vagyis hogy tudom használni?? :-))
terminálba?
köszi
- A hozzászóláshoz be kell jelentkezni
Igen, terminálban. Pontosabban: ez egy "szövegszűró", azaz ha kiadod ezt a parancsot, a bemenetére küldött szöveg szavait vizsgálja, és a kimenetre írja a statisztikát.
Ha nem ismernéd: ha két parancs közé | jelet írunk, az első parancs kimenete lesz a második parancs bemenete. Az általam írt sorban mind a 4 parancs úgy működik, hogy a bemenetére küldött szöveget átalakítja, és a kimenetre küldi. Tehát az első parancs bemenetére küldött szöveg átmegy a 4 szűrőn, és a negyedik parancs kimenete lesz a végső kimenet, a statisztika. Ha egy fájlból akarsz statisztikát csinálni, az első parancs bemenetét olvastasd egy fájlból, azaz az első parancs után (az első | elé) írd ezt: <fájlnév . Ha a statisztikát fájlba akarod íratni, akkor az utolsó parancs kimenetét irányítsd egy fájlba, azaz az utolsó parancs után írd ezt: >fájlnév .
- A hozzászóláshoz be kell jelentkezni
akkor ez így jó?
--kimenet.txt
a két vonal előtte az nincs ottt:-)
- A hozzászóláshoz be kell jelentkezni
akkor ez így jó?
[i]kimenet.txt[\i]
- A hozzászóláshoz be kell jelentkezni
akkor ez így jó?
< arany.txt tr -s " " "\n"|sort|uniq -ci|sort -nr > kimenet.txt
- A hozzászóláshoz be kell jelentkezni
Nem. Azt, hogy egy parancs bemenete vagy kimenete a terminál helyett egy fájl legyen, mindig a parancs után kell megadni, tehát ahhoz, hogy az első parancs (az első | előtti parancs) bemenete az arany.txt legyen, ez kell:
tr -s " " "\n"<arany.txt|sort|uniq -ci|sort -nr>kimenet.txt
Amúgy: amíg nem válaszoltak a hozzászólásodra, tudod szerkeszteni, ha alatta a Szerkesztés linkre kattintasz. Nem kellett volna mindig új hozzászólást küldeni.
- A hozzászóláshoz be kell jelentkezni
Tudom hogy lehet szerkeszteni de az internetem nem olyan jó mint volt...
aztán így nem láttam hogy mit ír vissza...
bocsi nem akartam 3 üzit küldeni
köszi a választ
- A hozzászóláshoz be kell jelentkezni
Dehogynem, Bash-ben (nem Dos-ban :) nyugodtan mehet az átirányítás az elejére, sőt akárhova, akár az argumentumok közé is. Még szebb is úgy, ha az elején van a stdin átirányítás, a végén meg a stdout.
<arany.txt tr -s " " "\n" | sort | uniq -ci | sort -nr >kimenet.txt
- A hozzászóláshoz be kell jelentkezni
nagyon király vagy gd!!a parancsodat hogy lehetne úgy kiegészíteni hogy a szavak számát is kiirja
ilyen alapon akkor egy adott doksira van betűstatisztika nem?ahol megszámolja adottt betűkből és írásjelekből mennyi van?
van ilyen?
köszi
- A hozzászóláshoz be kell jelentkezni
man wc
Karakterekkel kapcsolatban ilyesmire gondoltal?:
sed 's/\(.\)/\1\n/g' |sort|uniq -ci|sort -nr
- A hozzászóláshoz be kell jelentkezni
Valóban wc:
tr -s " " "\n"|sort|uniq -i|wc -l
- A hozzászóláshoz be kell jelentkezni
szia én ezt beírtam de nem ment
sed 's/\(.\)/\1\n/g'< arany.txt |sort|uniq -ci|sort -nr> kimenet.txt
mi a gond ezzel?
- A hozzászóláshoz be kell jelentkezni
Az, hogy a sed-nek a parancs elé -e kell.
- A hozzászóláshoz be kell jelentkezni
és akkor mit is írjak be hogy jó legyen?
nem tudok rájönni!
eza betűstatisztika progi nem?
- A hozzászóláshoz be kell jelentkezni
sed -e 's/\(.\)/\1\n/g'< arany.txt |sort|uniq -ci|sort -nr> kimenet.txt
man sed
- A hozzászóláshoz be kell jelentkezni
Az eredeti felvetésben említve volt a ragozás. A ragozás figyelembe vétele már jó ideje megvalósítható szabad szoftveres eszközökkel, konkrétan a Hunspell csomag hunstem programjával és a morfológiai információkkal kiegészített magyar szótárral.
Pl.
$ echo "A kutya szereti a macskát. A macskák szeretik a kutyákat." | ./hunstem ./hu_HU_morph.{aff,dic} /dev/stdin | grep -v ">" | sort | uniq -c
4 a
2 kutya
2 macska
2 szeret
- A hozzászóláshoz be kell jelentkezni
SZiasztok!
Hogy kell ezt a hunspell nevű morfológiai elemzőt feltelepíteni?
aot-get install- al feltettem de mégsem megy
Köszi a választ
- A hozzászóláshoz be kell jelentkezni
A kérdés már csak az, hogy mit tettél fel apt-get install-lal...
Nézz körül a projektek oldalain, nincs ez még annyira kényelmesre csinálva, hogy elsőre menjen.
http://hunspell.sf.net/
http://magyarispell.sf.net/
- A hozzászóláshoz be kell jelentkezni
Szia!
ezeket az oldalakat jócskán átnéztem már de nem sikerült semmi jót összehozni eddig !
a hunspellt feltettem (apt-vel)
jó lenne egy kis segítség mert már nagyon megszenvedek ezzel
(én egy szövegben lévő szavakat szeretnék szótövesíteni)
Szted hogy csináljam vagy mit tegyek még fel!
Nagyon örülnék egy kis segítségnek
köszi
- A hozzászóláshoz be kell jelentkezni
1. kérdés: van "hunstem" binárisod? Ha nincs, fordíts forrásból (hunspell része)
2. kérdés: van morfológiai információval ellátott szótárad? Ha nincs, készíts forrásból (magyarispell része)
Ezeket a dolgokat nem fogod tudni csomagból feltenni, mert nincsenek becsomagolva, vagy ha be vannak, akkor is egyszerűbb gyorsan fordítani egyet, mint keresgélni. Ha próbáltál fordítani, és nem ment, akkor írd le, hogy mi nem ment.
- A hozzászóláshoz be kell jelentkezni
Szia!valahogy próbáld így fórumon keresztül elmondani mert nagyon kezdő linuxos vagyok nem olyan régóta tolom. ezeket a forrásos dolgokat nem értem(hunsteam,ispell)
az elejétől kellene segítség
hogy mit szedjek le hogy mit telepítsek(fordítsak)
vhogy nem tudjuk felvenni a kapcsolatot?
köszönöm a segítséget
- A hozzászóláshoz be kell jelentkezni
Visszavonom tanaimat. Először is, a legújabb hunspell-ben nincs is hunstem. Másodszor is nem igazodok ki a jelenlegi helyzeten, és a dokumentáció sem segít.
Pl. man-ban:
hunspell -r *.html
Az aktuális könyvtárban található összes HTML állomány szavainak és a szavak szótöveinek kiírása.
Igen ám, de -r kapcsoló valójában nincs. További nyomozás szükséges, hogy a probléma hogyan oldható meg.
- A hozzászóláshoz be kell jelentkezni
Nagyon szépen köszönöm a válaszokat!
Azért megkérdezem hogy segítesz e nekem a probléma megoldásában?
Köszi a választ
- A hozzászóláshoz be kell jelentkezni
A dokumentációt most frissítem. A hunstem funkciók az analyze programba kerültek, de a napokban várható kiadásban a parancssori hunspell -s kapcsolójával (ami egyben szavakra is tördel, tehát egyből szövegfájlokon futtatható) is elérhető lesz.
A magyar tövezést sajnos még javítani kell, elsősorban azért, mert a képzett alakoknál nagyon lelassul a tövezés (toldalékolást is használ itt a program, ami a nem optimalizált szótárral még meggátolja, hogy nagy mennyiségű szöveg indexelésére lehessen használni).
- A hozzászóláshoz be kell jelentkezni
Mikorra várható hogy tudom használni a tövezést kár lassan akár optimalizálva?
Nekem csak egy viszonylagos eredmény kell!
Ha lesz bármiféle info erről a dologról írj már nekem ide vagy egy emailt.
köszi
ja és a dokumentációt honnan érem el és mit töltsek le hogy majd menjen?
sapi87 kukac citromail pont hu
- A hozzászóláshoz be kell jelentkezni
Magad uram, ha szolgád nincsen: http://pastebin.com/VMUNr56Z
Ez a regex-gyűjtemény szolgált 4-5 éve egy tízezer egyedi tételt tartalmazó név- és címmutató toldalékainak leválasztására. (Persze nem teljes, de nálam csak ezek fordultak elő, és nem is hibátlan, azért javítgatnom kellett egy-két tételt utólag :)
- A hozzászóláshoz be kell jelentkezni
A dokumentáció jól fog jönni, mert nem úgy működik, mint régen.
timar@jars-desktop:~/magyarispell-1.3$ analyze hu_HU_morph.aff hu_HU_morph.dic /dev/stdin
majom
> majom
analyze(majom) = st:majom [noun]{+[NOM]}
stem(majom) = majom
majmot
> majmot
Unknown word.
majomot
> majomot
Unknown word.
kutya
> kutya
analyze(kutya) = st:kutya [noun]{+[NOM]}
stem(kutya) = kutya
kutyát
> kutyát
Unknown word.
cica
> cica
analyze(cica) = st:cica [noun]{+[NOM]}
stem(cica) = cica
cicát
> cicát
Unknown word.
megyek
> megyek
Unknown word.
megy
> megy
Unknown word.
- A hozzászóláshoz be kell jelentkezni
A tövezett szóstatisztika ügyében van e már valami eredmény????
hol van a friss dokumentáció?
Köszönöm
- A hozzászóláshoz be kell jelentkezni
A kettővel fenti példám azért nem ment, mert elrontottam a szótárkészítést. Tehát elvileg minden jó már most is.
A te fő problémád, sapi, ha jól látom, az, hogy az "ilyen forrásos dolgokat nem érted". Ezen nehéz lesz segíteni egy rövid hozzászólásban, meg kell tanulnod valahonnan, ha terveid vannak a szabad szoftverekkel.
Általában annyira egyszerű, hogy a forráscsomagot le kell tölteni, ki kell csomagolni, majd a ./configure && make && sudo make install parancsot kiadni. A kicsomagolt forrás gyökerében szokott lenni readme, azt el lehet olvasni.
A magyarispell csomagot egyszerűen úgy kell "lefordítani" hogy 'make'.
Te valamire vársz most? Mondjuk a Hunspell 1.2.2 kiadására? Ez szerintem nem szükséges, mert a feladatodat az 1.2.2 bétával vagy egy régebbi kiadással is megoldhatod. Laci leírta, hogy a 'hunstem' átneveződött 'analyze'-ra, vagy egyik, vagy másik meglesz. Utána meg a fórumban feljebb gördítve megnézed, hogy hogy kell használni, leírtam már. Ha odáig eljutsz, hogy elkészíted a tövező programot és a szótárat, és parancssorban működik, akkor jelezd, és továbbléphetünk, hogy hogyan dolgozd fel a kimenetét céljaidnak megfelelően.
- A hozzászóláshoz be kell jelentkezni
"Ha odáig eljutsz, hogy elkészíted a tövező programot és a szótárat, és parancssorban működik, akkor jelezd, és továbbléphetünk, hogy hogyan dolgozd fel a kimenetét céljaidnak megfelelően."
Na ezt nem értem!
Tehát letöltöm a csomagokat és ezzel kell megcsinálni ./configure && make && sudo make install
ez ok a következő kérdés
Mit kell letölteni és forrásból feltenni?
kicsit értetlen vagyok mert egy két dolog nem tiszta:-)
köszi a kitartó válaszokat :-)
- A hozzászóláshoz be kell jelentkezni
Ezeket kell letölteni és forrásból feltenni:
http://downloads.sourceforge.net/hunspell/hunspell-1.2.2b.tar.gz
http://downloads.sourceforge.net/magyarispell/magyarispell-1.3.tar.gz
- A hozzászóláshoz be kell jelentkezni
így csomagolod ki őket:
tar xzf fájlneve
minden ilyesmi parancsot terminálba vagy konzolba írj be. TAB billentyűvel kiegészíthetsz. Ha nem egyértelmű, nyomd meg kétszer.
ha alap dolgokkal sem vagy tisztában, nézz körbe pl. itt: http://szabilinux.hu/ - bár kissé elavult, még mindig sokat tanulhatsz belőle.
- A hozzászóláshoz be kell jelentkezni
na kész van feltettem a hunspell -t (kicsomagoltam majd ./configure && make && sudo make install - lal)
aztán ispell kicsomagolás és make és a végén ezt kaptam
===> ragozási táblázat (magyar.aff) előállítása
/bin/sh: m4: not found
make: *** [magyar.aff] Error 127
eddig kész várom az instrukciókat
ez mit jelent!
hogy kell parancssorbol megnézni hogy mükődik e?
eddig kész várom az instrukciókat
mit csináljak most???
köszi a kitartást
- A hozzászóláshoz be kell jelentkezni
apt-get install m4
és utána a magyarispell mappában még egyszer: make clean && make
Az m4 csomag feltétlenül szükséges a ragozási táblázatok előállításához.
- A hozzászóláshoz be kell jelentkezni
apt-get install m4
It doesn't matter if you like my song as long as you can hear me sing
- A hozzászóláshoz be kell jelentkezni
ez kész:-))))
most egy txt fájlból hogy tudnám kinyerni az adatokat?
vagy kimenetróől vagy bárhonnan is?
köszi
- A hozzászóláshoz be kell jelentkezni
Tegyük fel, hogy a szöveg utf8 kódolásban van. Akkor:
$ analyze hu_HU_u8_morph.aff hu_HU_u8_morph.dic valami.txt
- A hozzászóláshoz be kell jelentkezni
lefutattam egy txt(utf-8) re és ezt kaptam ez egy részlet
generate(társalkodónője,, a tiszt korábbi kedvese és annak az anyja között, kiket ő mind személye) = NO DATA
generate(en, ismert. Ez volt az alapeszme, a végkatasztrófa, amihez aztán nekem a megelőző történetet) = NO DATA
generate(, mely e végzethez elvezet, hozzá kellett építenem, s a szereplő alakokat, helyzeteket mind ö) = NO DATA
generate(szeválogatnom:, hihetővé tennem. De azok az alakok és helyzetek mind megvoltak valósággal.) = NO DATA
generate(A, “Senki szigetének” a létezéséről pedig Frivaldszky Imre nagynevű természettudósunk �) = NO DATA
generate(ltal, értesültem, s az a hatvanas években még a maga kivételes állapotában megvolt, mint egy) = NO DATA
generate(se, Magyar-, se Törökországhoz nem tartozó új alkotású terület.) = NO DATA
generate(Ennyit, jónak láttam elmondani.) = NO DATA
generate(Dr., Jókai Mór) = NO DATA
mit rontottam el ??
nekem ilyesmi erdemény kellene:
- A hozzászóláshoz be kell jelentkezni
Ejnye, megint rossz tanácsot adtam, mert a hunstem nagyon berögzült az agyamba. Az analyse úgy működik, hogy ha egy sorban 2 szó van, akkor az elsőt a másodiknak megfelelően próbálja ragozni. Ez nem sikerülhetett.
Szóval mondjuk azt lehetne csinálni, hogy a szöveget szavakra bontani előbb.
$ cat valamit.txt | tr -d '.,:;!?' | tr ' ' '\n' | analyze hu_HU_u8_morph.aff hu_HU_u8_morph.dic /dev/stdin
És akkor ennek a kimenetét szűrni igény szerint. Mondjuk
$ cat valamit.txt | tr -d '.,:;!?' | tr ' ' '\n' | analyze hu_HU_u8_morph.aff hu_HU_u8_morph.dic /dev/stdin | grep analyze | sed -e "s/^.*st://" -e "s/ .*//" | sort | uniq -c
Én ilyeneket szoktam gányolni magamnak, biztos lehetne szebben is...
- A hozzászóláshoz be kell jelentkezni
az első ilyet ad:
Unknown word.
> új
Unknown word.
> alkotású
Unknown word.
> terület
Unknown word.
> Ennyit
a második meg a promtot adja
???
- A hozzászóláshoz be kell jelentkezni
az első ilyet ad:
"...
> új
Unknown word.
> alkotású
Unknown word.
> terület
Unknown word.
> Ennyit
... "
a második meg a promtot adja
???
- A hozzászóláshoz be kell jelentkezni
Megjelent a Hunspell 1.2.2. Töltsd le, a hunspell program -s kapcsolóval tövez, minden eddiginél egyszerűbben. Magyarul is van friss dokumentáció a csomagban.
- A hozzászóláshoz be kell jelentkezni
Pontosan mit tegyek fel és hogyan és milyen paranccsal tudok egy txt-t letövezi!!
köszi a választ
- A hozzászóláshoz be kell jelentkezni
feltettem a hunspell új kiadását de mondjuk hunspell -s arany.txt-re ezt kapo:
Nem lehet megnyitni a ragozási vagy a szótárfájlt.
Pontosan mit tegyek fel és hogyan és milyen paranccsal tudok egy txt-t letövezni!!
köszi a választ
- A hozzászóláshoz be kell jelentkezni
hunspell -d /a/szotar/eleresi/utja/hu_HU_u8 -s <arany.txt
A szótár ugyanaz, mint amit már egyszer feltettél: magyarispell 1.3
Egyébként meg: man hunspell
- A hozzászóláshoz be kell jelentkezni
A szótár elérési útja micsoda alap esetben mert ezt nem tudom?,
köszi
amit eddig csináltam:
(letölt hunspell
letölt magyarispell
kicsomagolom őket
majd ahunspell ./configure && make && sudo make install
apt-get install m4
majd magyarispell make
ennyit csináltam semmit nem állítgattam)
- A hozzászóláshoz be kell jelentkezni
Akkor ott van a szótár, ahol elkészítetted, a kicsomagolt magyarispell könyvtárban. Annak az elérési útját kell megadni. Ha átmásolod az /usr/share/hunspell könyvtárba (amit valószínűleg előbb létre kell hozni), akkor nem kell a -d után elérési utat írnod, csak a szótár nevét. Ha itt a szótárt átnevezed default.dic-re és default.aff-ra, akkor -d kapcsoló sem kell.
- A hozzászóláshoz be kell jelentkezni
úgy néz ki megy adolog de lehet h még lesznek gondok!:-)
példa: hunspell -d /home/sapi/magyarispell-1.3/hu_HU_u8 -s
+ Törökország
*
+ tartozik
*
+ alkot
*
+ ennyi
+ jón
*
+ mond
de ez jó eredmény mert a tartozik szó sz nem szótő!? ez szerintem nem szótövesített!?
de megkérdezem hogy a meglehet e valahogy számoltatni hogy melyik szótöből mennyi van és ezt sorba rendezni és egy txt-be tenni
köszi a választ
- A hozzászóláshoz be kell jelentkezni
A "tartozik" szónak szerinted mi a töve? Szerintem ezt speciel jól csinálta.
Természetesen meg lehet számolni és txt-be is ki lehet tenni.
grep, sed, sort, uniq
ezekre lesz szükséged. Pl. ha a kimenet olyan jellegű, mint amilyet írtál fent, akkor a parancs után illeszd be:
| grep "+" | sed -e "s/^.* //" | sort | uniq -c >kimenet.txt
- A hozzászóláshoz be kell jelentkezni
igazad van rossz példát hoztam de a txt-ben ez is van: 5 zsibbad 2 zsibbadt ezeknek a szótöve a zsibbad nem?
akkor ez most jó eredmény?
ja meg nem rendezte előfordulás szerint sorba melyik paraméter írjam át?nekem ilyen eredmény kell: http://hup.hu/node/46561#comment-515732 ami te írtál!!:-)
köszi a választ
- A hozzászóláshoz be kell jelentkezni
5 zsibbad 2 zsibbadt: hát ehhez nem tudok hozzászólni, lévén más szófajú a két szó, nem tudom hogy vannak a szótárban stb. Nem biztos, hogy egy igéből generálódik minden képzett forma, lehet, hogy külön is fel van véve.
Amit én írtam, ott véletlenül úgy jött ki, hogy az 'a'-ból volt a legtöbb. A számosság szerinti rendezéshez a uniq -c után írd be:
| sort -gr
De nem is értem, miért nem tudod ezeket kiolvasni a man-ból?! Én is onnan nézem, a fene sem tudja fejből.
- A hozzászóláshoz be kell jelentkezni
köszi minden segítséget megoldódott minde! ezt a man hunspell dolgot meg teljesen elfelejtettem.BOCSI!
mostmár elsőnek man - t fogok olvasni aztán kérdezgetek?.:-)
köszi mindent
- A hozzászóláshoz be kell jelentkezni
Ha már man-ról van szó, hogyan lehet parancssorból szinonimákat keresni? Egyáltalán lehet e?
- A hozzászóláshoz be kell jelentkezni
Szia!
Nagyjából megismertem a program mükődését de arra nem tudok rájönni hogy az "a" mért nem hozza ki eredményként!
valahogy nem lehetne eredményként azt is számon tartani?
köszi a választ
- A hozzászóláshoz be kell jelentkezni
Ez melyik programhoz megy?
- A hozzászóláshoz be kell jelentkezni
az új hardy heron ubuntu nem megy a dolgo valami gond van és azt írja hogy
hunspell: error while loading shared libraries: libhunspell-1.2.so.0: cannot open shared object file: No such file or directory
na most mit tegyek?
a régi rendszer szerint lett telepítve és itt nem jó!!
- A hozzászóláshoz be kell jelentkezni
Ezt találtam, de már lehet késő ;)
Nekem épp ilyenre volt szükségem:
http://www.csgnetwork.com/documentanalystcalc.html
- A hozzászóláshoz be kell jelentkezni