[hunspell-fi-devel] Perusmuodossa olevien sanojen kerääminen

Harri Pitkänen hatapitk at cc.jyu.fi
Sun Oct 30 14:50:29 EET 2005


On Sunday, 30. Octoberta 2005 13:16, Reijo Tomperi wrote:
> En kannata yhden sanan syöttöä kerrallaan. Mikäli palvelimen ja
> asiakkaan välissä on pientäkin viivettä, käyttöliittymän käyttö
> muodostuu tuskaksi, jos haluaa syöttää useita sanoja kerrallaan. Tämän
> olen saanut kokea esim. sourceforgeen projektia pystyttäessäni
> (projektin jokaisen ominaisuuden joutuu laittamaan yksi kerrallaan ja
> kaikkien asetuksien säätöön meni noin 3 tuntia).
>
> Suosittelen sen sijaan sitä että tallennetaan syöttäjän ip ja vaikka
> myös syöttökerran id. Tällä tavalla vaikka ip:n valehtelisi, samalla
> kerralla syötetyt sanat pystyisi silti admin-liittymästä poistamaan
> yhdellä napinpainalluksella. Täten siis käyttäjille olisi käyttö
> helpompaa, eikä väärinkäyttö voisi olla sen pahempaa kuin yhden sanan
> liittymälläkään.

OK. Tässä on kyllä järkeä, voidaan se tehdä näinkin. Ehkäpä voisimme rajata 
massasyöttömahdollisuuden "rekisteröityneille" käyttäjille (perusteita tälle 
alempana)?

> >Sisäänkirjautumisen
> >vaatiminen saattaisi kuitenkin jo mennä liiallisuuksiin, koska tuonne
> >kuitenkin kerättäisiin vain perusmuodossa olevia sanoja. Olisiko
> > mahdollista tehdä vaikka niin, että ohjelma rajoittaisi yhdestä
> > IP-osoitteesta syötettävien sanojen määrän muutamaan kymmeneen päivässä,
> > ja aktiivisempien käyttäjien kanssa sovittaisiin sitten erikseen tavasta,
> > jolla tuon rajoituksen voisi kiertää?
>
> Edelleen, en usko että rajoitukselle on tarvetta, koska voimme tehdä
> tehokkaita suodatuksia ja tarvittaessa poistaa kaikki tietystä ip:stä
> tulleet sanat. Tietty jos on pelkoa siitä että joku tekee
> DOS-hyökkäyksen täyttämällä palvelimen sanoilla, voimme tehdä rajauksen
> johonkin järjettömään määrään. Mutta toisaalta ip:n muuttaminen on melko
> helppoa, etenkin kun tässä tapauksessa ip:n voi vain valehdella. Voisin
> itse tehdä luultavasti parissa tunnissa ohjelman mikä pystyisi
> täyttämään kannan random-sanoilla, lähettäen niitä eri ip-osoitteista.
> Kysymys kuuluu, haluaako joku oikeasti tehdä sellaisen hyökkäyksen? Jos
> tuosta tulee ongelma, ainoa varma ratkaisu on käyttäjätunnus-järjestelmä
> ja tunnukset saa vain sitten kun joku ihminen on hakijan hyväksynyt.

Tässä minulla ei pelkästään ollut ajatuksena tietoturvapuoli, vaan se, että 
emme oikein voi vastaanottaa suuria määriä sanoja anonyymeiltä 
"lahjoittajilta". Ainakin uuden tekijänoikeuslain mukaan luettelot ja 
tietokannat voivat olla tekijänoikeuksien suojaamia, joten meidän on 
tiedettävä vähintäänkin nimeltä kaikki henkilöt, jotka ovat luovuttaneet 
meille merkittäviä määriä materiaalia, ja pyydettävä heitä esimerkiksi 
sähköpostitse ilmoittamaan, että hyväksyvät materiaalin levittämisen GPL:n 
ehdoilla. Tässä asiassa yksinkertainenkin rajoitus (esimerkiksi ip:n mukaan) 
auttaa, koska se sallii kenen tahansa lisätä yksittäisiä sanoja (jotka eivät 
siis ylitä tekijänoikeuden teoskynnystä) ilman että kyseisen henkilön 
tarvitsee edes tutustua GPL:n sisältöön. Vakavammin tähän työhön ryhtyvien on 
ilman muuta esiinnyttävä omilla nimillään, ja heitä varten tarvitsemme sitten 
jonkinlaisen tunnistusjärjestelmän.
Mitä tuohon ip-osoitteiden väärentämiseen tulee, niin onhan se toki 
mahdollista, mutta tuskinpa löytyy montaakaan ihmistä, joka sellaista tekisi. 
Ja onhan siihen oltava tiettyjä teknisiä edellytyksiäkin, ihan mistä tahansa 
satunnaisesta ip-osoitteesta lähtevää tcp-yhteyttä ei oikein voi väärentää. 
Tässä varmaan riittää suojaksi se, että voimme tarvittaessa sulkea liittymän 
tyhjentää tietokannan siitä hetkestä eteen päin kun havaitsemme tuollaisen 
hyökkäyksen, jätämme jäljelle vain vanhemmat sanat.

> Voisimme myös ottaa järjestelmän kehittäjien sisäiseen käyttöön ja sopia
> vaikka aluksi että vain substantiiveja ja/tai adjektiiveja saa syöttää.
> Samalla voisimme testata järjestelmää paremmin ennen sen julkistamista
> suuremmalle yleisölle. Voi olla parempi, että sanojen syöttäjä
> luokittelee sanat verbi/subst/adj/yms. luokituksella. Tällöin tosin
> voisimme kerätä verbejä jo nyt, vaikka taivutamme niitä vasta myöhemmin.
> Ispell-sanaston hyödyntäminen on tietysti myös hyvä idea tehdä ensin.

Näin se on tosiaan hyvä tehdä. Voin yrittää lisätä palvelimelle hiukan 
siivotun version Ispell-sanastosta vaikka jo tänään. Tosin sielä on sitten 
käsipelillä karsittava pois taivutetut muodot ja yhdyssanat.


> Liitin toiseen tekemääni ohjelmaan jo päätteiden tunnistamisen.
> Lukuunottamatta paria poikkeusta ja sekoilua adjektiivien ja
> substantiivien välillä, se osaa tehdä kohtuullisen luotettavaa työtä
> (tai näin uskon) ja usein kertoa suoraan mihin luokitukseen sana kuuluu
> ja erityisesti osaa kertoa jos sanalle ei ole luokitusta, koska
> tietääkseni ainoat virheet ovat ylimääräiset positiiviset luokitukset.
> Ohjelmalla pystyy myös samalla testaamaan sanan eri taivutusmuotoja ja
> näin pystyy varmistamaan, että sana tuli oikeaan luokitukseen.
>
> Tuon ohjelman heikkoudet ovat todellakin se, että se vaatii hunspell,
> python, php ja hf-luolistat-ohjelmat ja http-palvelimen. Ja se että sitä
> voi käyttää vain yksi kerrallaan (koska se käyttää kiinteitä
> tiedostonimiä mm. .dic ja .aff tiedostoissa, jotka hf-luolistat
> generoi). Nykyversiolla voi myös tarkistaa vain yhden sanan kerrallaan,
> mutta voisin yrittää jalostaa siitä sellaisen version, että se osaa
> tarkistaa useita eri sanoja taivutuksineen samanaikaisesti. Tällöin
> järjestelmästä voisi tehdä ainakin cronissa ajettavan version, jolloin
> sanat syötettäisiin tietokantaan ja käytäisiin sitten cron-ajastetusti
> esim. kerran minuutissa läpi ja talletettaisiin muokattuina taas
> kantaan, josta syöttäjä voisi käydä ne katsomassa (joko
> ip-tunnistuksella ja aikaleimalla pelkästään omat sanansa, tai sitten
> kaikkien syöttämät).

Tässä nämä palvelimelle asetettavat vaatimukset ovat tosiaan ongelma. Minulla 
ei ole itselläni palvelintilaa, jossa tällaista voisi tehdä. Jos joku 
onnistuisi kirjoittamaan php:llä ohjelman, joka generoi kaikki sanan 
taivutukset perusmuodon ja taivutusluokan mukaan, niin sen pohjalta tämän 
voisi ymmärtääkseni tehdä ilman Hunspellin tai Pythonin käyttöä. Katsotaan, 
jos vaikka innostuisin joskus itse yrittämään, sille olisi käyttöä 
muuallakin.

> Kiinnostaisi myös tietää mitenkä te testaatte ja varmistatte että sanan
> luokitus on mennyt oikein? Tämä ohjelmahan on yritys yhdistää testaus ja
> sanan luokitus siten, että käyttäjän tarvitsee suorittaa vain testi-osio
> ja ohjelma hoitaa luokituksen automaattisesti.

Ei tähän varmistamiseen itse asiassa liity paljon muuta kuin se, mitä tuo 
ohjelmasi jo tekee automaattisesti. Oikeastaan kyse on vain siitä, että pitää 
jotenkin vakuuttautua siitä, että sanan taivutukset toisaan vastaavat 
ohjeissa annettujen esimerkkisanojen taivutuksia, myös niiden muotojen osalta 
joita ei oltu syötetty ohjelmaasi.

Harri



More information about the devel mailing list