2010-07-05 9 views
23

Wie erkenne ich, in welcher Sprache ein Text mit NLTK geschrieben wurde?NLTK und Spracherkennung

Die Beispiele, die ich gesehen habe, verwenden nltk.detect, aber wenn ich es auf meinem Mac installiert habe, kann ich dieses Paket nicht finden.

Antwort

26

Kennen Sie den folgenden Codeausschnitt?

english_vocab = set(w.lower() for w in nltk.corpus.words.words()) 
text_vocab = set(w.lower() for w in text if w.lower().isalpha()) 
unusual = text_vocab.difference(english_vocab) 

von http://groups.google.com/group/nltk-users/browse_thread/thread/a5f52af2cbc4cfeb?pli=1&safe=active

Oder der folgenden Demo-Datei?

https://web.archive.org/web/20120202055535/http://code.google.com/p/nltk/source/browse/trunk/nltk_contrib/nltk_contrib/misc/langid.py

+0

PS, ist es noch verlassen nltk.detect. Irgendeine Idee, wie man das auf einem Mac installiert? – niklassaers

+0

Ich glaube nicht, dass Detect ein natives Modul für nltk ist. Hier ist der Code: http://docs.huihoo.com/nltk/0.9.5/api/nltk.detect-pysrc.html Sie könnten es wahrscheinlich herunterladen und in Ihrer Python-Bibliothek, die in sein könnte : /Library/Python/2.x/site-packages/nltk ... –

+0

Überprüfen Sie dies .. http://blog.alejandronolla.com/2013/05/15/detecting-text-language-with-python -and-nltk/ –

15

Obwohl dies nicht in der NLTK ist, ich habe gute Ergebnisse mit einer anderen Python-basierten Bibliothek hatte:

https://github.com/saffsd/langid.py

Dies ist sehr einfach zu importieren und enthält eine große Anzahl von Sprachen in seinem Modell.

18

Diese Bibliothek ist zwar nicht von NLTK, hilft aber sicherlich.

sudo $ pip installieren langdetect

Unterstützte Python-Versionen 2.6, 2.7, 3.x.

>>> from langdetect import detect 

>>> detect("War doesn't show who's right, just who's left.") 
'en' 
>>> detect("Ein, zwei, drei, vier") 
'de' 

https://pypi.python.org/pypi/langdetect?

P. S .: dies richtig immer Erwarten Sie nicht arbeiten:

obwohl
>>> detect("today is a good day") 
'so' 
>>> detect("today is a good day.") 
'so' 
>>> detect("la vita e bella!") 
'it' 
>>> detect("khoobi? khoshi?") 
'so' 
>>> detect("wow") 
'pl' 
>>> detect("what a day") 
'en' 
>>> detect("yay!") 
'so' 
+1

Vielen Dank für den Hinweis, dass es nicht immer funktioniert. 'detect (" Du hast es geschafft! ")" gibt mir "fr". Ich frage mich, ob es etwas besseres gibt. –

+1

Hier ist eine weitere lustige Beobachtung: Es scheint nicht immer die gleiche Antwort zu geben. '>>> detect_langs (" Hallo, ich bin christiane amanpour. ") [it: 0.8571401485770536, de: 0.14285811674731527] >>> detect_langs (" Hallo, ich bin christiane amanpour. ") [it: 0.8571403121803622, fr: 0.14285888197332486] >>> detect_langs ("Hallo, ich bin christiane amanpour.") [it: 0.999995562246093] ' –