使用Python从文本中删除非英语单词

And*_*her 14 python data-cleaning data-science

我正在对python进行数据清理练习,我正在清理的文本包含我想删除的意大利语单词.我一直在网上搜索我是否可以使用像nltk这样的工具包在Python上执行此操作.

例如给出一些文字:

"Io andiamo to the beach with my amico."
Run Code Online (Sandbox Code Playgroud)

我想留下:

"to the beach with my" 
Run Code Online (Sandbox Code Playgroud)

有谁知道如何做到这一点?任何帮助将非常感激.

DYZ*_*DYZ 26

您可以使用wordsNLTK 的语料库:

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'
Run Code Online (Sandbox Code Playgroud)

不幸的是,Io恰好是一个英文单词.一般来说,可能很难确定某个单词是否为英语.

  • 如果您收到“未找到资源单词”,请添加行:“nltk.download('words')”。 (4认同)

gdm*_*hon 5

在 MAC OSX 中,如果您尝试此代码,它仍然会显示异常。因此,请确保手动下载单词语料库。一旦您import建立了nltk图书馆,就可以像在 mac os 中一样,它不会自动下载单词语料库。所以你必须下载它,否则你将面临异常。

import nltk 
nltk.download('words')
words = set(nltk.corpus.words.words())
Run Code Online (Sandbox Code Playgroud)

现在您可以执行与前人指示的相同的执行。

sent = "Io andiamo to the beach with my amico."
sent = " ".join(w for w in nltk.wordpunct_tokenize(sent) if w.lower() in words or not w.isalpha())
Run Code Online (Sandbox Code Playgroud)

根据NLTK文档,它并没有这么说。但我在 github 上遇到了一个问题,并以这种方式解决了,它确实有效。如果您不将word 参数放在那里,您的 OSX 可能会注销并一次又一次地发生。