Just nu i M3-nätverket
Gå till innehåll

Detektera språk i text?


.M

Rekommendera Poster

Jag håller på med ett litet program som snurrar igenom texter. Men jag vill applicera olika funktioner beroende på om texten är skriven på engelska eller svenska.

 

Någon som har ett förslag på en metod som gör att jag kan detektera vilket språk texten är skriven på?

Länk till kommentar
Dela på andra webbplatser

Engelska/Svenska enbart torde inte vara så svårt att få till en analys som ger rätt svar i nio fall av tio eller än bättre.

 

Den enklast tänkbara lösningen torde vara att leta efter ett antal typiska, vanliga ord och strofer i språket.

Exempelvis torde den enklaste detektionen av svenska vara att leta efter åäö.

Engelska leta efter the, that, you, those, I (stort I)

 

Fast så fort du tar med fler språk måste du förfina matchningen givetvis men om bara två språk inte speciellt svårt.

Länk till kommentar
Dela på andra webbplatser

Thomas Tydal

Jag skrev en sådan funktion för tolv år sen. Du kan testa den här:

 

http://www.tydal.nu/article/sprakanalys/

 

Den bygger på att den undersöker de vanligaste bokstäverna, de vanligaste bokstäverna som följer direkt efter varandra och de vanligaste tre bokstäverna i rad. Det matchas sedan mot statistik för olika språk.

 

Algoritmen/statistiken är inte hemlig på något vis, så om du tycker det funkar bra för dina behov kan du få den.

Länk till kommentar
Dela på andra webbplatser

Thomas Tydal

De vanligaste bokstäverna i engelska:

 

e, t, a, o, n, i, s, r, h, l

th, in, er, re, an, he, ar, en, ti, te

the, ing, and, ion, ent, for, tio, ere, her, ate

 

Vanligast i svenska:

 

a, e, r, t, n, s, i, l, o, d

en, er, de, an, ar, st, et, tt, in, te

för, och, att, ter, det, som, and, ska, ill, ing

 

Sen plockar jag ut de tio vanligaste bokstäverna i texten, de tio vanligaste tvåbokstäverna och de tio vanligaste trebokstäverna, och gör en jämförelse med språken som resulterar i en poängräkning. Jag ger två olika typer av poäng (ungefär samma uppdelning som i det gamla spelet Mastermind :-)

 

A) Rätt bokstavskombination på rätt plats, alltså exempelvis att den vanligaste trebokstavskombinationen i texten är the.

 

B) Rätt bokstavskombination på fel plats, alltså exempelvis att the är näst vanligast.

 

Formeln för A-poäng är:

 

4x^2 + 3x - 3y + 30

 

Och B-poäng:

 

x^3 + x^2

 

x är 0 för enbokstavskombinationer, 1 för tvåbokstavskombinationer och 2 för trebokstavskombinationer.

y är positionen i frekvenstabellen, alltså 0 för den vanligaste, 1 för den näst vanligaste osv.

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...