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

使用Python从文本中删除非英语单词,python,data-science,data-cleaning,Python,Data Science,Data Cleaning,我正在python上做一个数据清理练习,我正在清理的文本包含我想删除的意大利语单词。我一直在网上搜索是否能够使用nltk之类的工具包在Python上实现这一点 例如,给定一些文本: "Io andiamo to the beach with my amico." 我想留下: "to the beach with my" 有人知道如何做到这一点吗? 任何帮助都将不胜感激 您可以使用NLTK中的单词语料库: import nltk words = set(nltk.corpus.words.w

我正在python上做一个数据清理练习,我正在清理的文本包含我想删除的意大利语单词。我一直在网上搜索是否能够使用nltk之类的工具包在Python上实现这一点

例如,给定一些文本:

"Io andiamo to the beach with my amico."
我想留下:

"to the beach with my" 
有人知道如何做到这一点吗?
任何帮助都将不胜感激

您可以使用NLTK中的
单词
语料库:

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'

不幸的是,Io恰好是一个英语单词。一般来说,可能很难判断一个单词是否为英语。

在MAC OSX中,如果您尝试此代码,它仍然会显示异常。因此,请确保手动下载单词语料库。一旦你导入
你的
nltk
库,你可能会像在mac操作系统中一样不自动下载单词语料库。所以你必须下载它,否则你将面临异常

import nltk 
nltk.download('words')
words = set(nltk.corpus.words.words())
现在,您可以执行与前一个人指示的相同的执行

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())

根据文件,它没有这样说。但是我得到了一个关于github的解决方案,它真的很有效。如果不将
word
参数放在那里,OSX可能会注销并一次又一次地发生

编辑以保留非单词(标点符号、数字等)嗨,谢谢你的回答,但当我应用名词的复数形式时。比如资源,孩子们。它也被移除了。你知道为什么会这样吗?语料库中的单词不包含复数形式。你必须先做lemmatization。添加一行:
nltk.download('words')
,如果你没有找到
资源词。
@DYZ有没有办法在
数组的列上使用
单词
语料库?请查看我的问题,嘿,但是nltk语料库中的单词本质上并不详尽,它不包含单词的所有不同形式、单词的同义词等……:它只包含235886个独特的英语单词。我试图检查这个集合中是否同时存在company和companys这个词。我只找到了公司,没有公司。考虑到这一点,有没有办法增加集合的大小,增加同一单词的更多单词、不同形式和同义词?或者有没有其他有效的方法?