Just nu i M3-nätverket
Jump to content

Detektera språk i text?


.M

Recommended Posts

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å?

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...