2016-12-22 1 views
3

Ich mache eine Datenbereinigung Übung auf Python und der Text, den ich putze, enthält italienische Wörter, die ich entfernen möchte. Ich habe online gesucht, ob ich dies auf Python mit einem Toolkit wie Nltk tun könnte.Entfernen von nicht-englischen Wörtern aus Text mit Python

Zum Beispiel einen Text gegeben:

"Io andiamo to the beach with my amico." 

Ich möchte mit gelassen werden:

"to the beach with my" 

Kennt jemand eine Möglichkeit, wie dies geschehen könnte? Jede Hilfe würde sehr geschätzt werden.

Antwort

2

Es gibt eine gute Python-Bibliothek namens Enchant. Es kann überprüfen, ob ein Wort Englisch ist.

Von ihrer Homepage:

>>> import enchant 
>>> d = enchant.Dict("en_US") 
>>> d.check("Hello") 
True 
>>> d.check("Helo") 
False 
>>> d.suggest("Helo") 
['He lo', 'He-lo', 'Hello', 'Helot', 'Help', 'Halo', 'Hell', 'Held', 'Helm', 'Hero', "He'll"] 

So könnte man so etwas wie:

string = "Io andiamo to the beach with my amico." 
english_words = [] 
for word in string.split(): 
    if d.check(word): 
     english_words.append(word) 
print " ".join(english_words) 

HINWEIS: kleine Worte sind hart Sprache zu bestimmen, ist, dass viele kleine Wörter in vielen verschiedenen Sprachen sein können , also das Ergebnis von dem obigen Code ist:

Io to the beach with my 

Wo Sie daswünschten

würde
+0

Vielen Dank für die Hilfe! Es hat funktioniert :) –

4

Sie die words Korpus aus NLTK können ausgeschlossen wurden:

import nltk 
words = set(nltk.corpus.words.words()) 

sent = "Io andiamo to the beach with my amico." 
" ".join(w for w in nltk.wordpunct_tokenize(sent) \ 
     if w.lower() in words or not w.isalpha()) 
# 'Io to the beach with my' 

Leider ein englisches Wort sein, Io passiert. Im Allgemeinen kann es schwierig sein zu entscheiden, ob ein Wort Englisch ist oder nicht.

+0

Das ist genau das, was ich gesucht habe, danke! –

+0

Bearbeitet, um Nichtwörter zu erhalten (Interpunktion, Zahlen usw.) – DyZ

Verwandte Themen