【发布时间】:2022-06-16 13:26:26
【问题描述】:
我在 pandas 数据框中有一列有数百万行。许多词是非英语的(例如来自其他语言的词或没有任何意义的词,例如“**5hjh”)。我想用 Wordnet 作为一个综合英语词典来帮助我清理这个包含列表的列。理想情况下,输出应该是一个仅包含英文单词的新列。
我已经尝试了以下代码,它是从 Stackoverflow 获得的,但它似乎无法正常工作,因为它返回一个没有任何文字的空列:
from nltk.corpus import wordnet
def check_for_word(s):
return ' '.join(w for w in str(s).split(',') if len(wordnet.synsets(w)) > 0)
df["new_column"] = df["original_column"].apply(check_for_word)
【问题讨论】:
-
您需要提供更多信息以便我们提供帮助,该列中的数据如何?每行只有一个单词吗?如果是这样,为什么要拆分已经是单词的字符串?
-
您好!谢谢你的问题。该列由字符串组成,其中几个单词用逗号分隔。例如:第一行:[mr, ugo, sacchetti, october, jack, d];第二行:[36200,itt,world,communications,inc]。我只想将英文单词保存为新列中用逗号分隔的字符串
-
你问的很重要。
spaghetti、pasta和pizza是英文单词。naïve也是如此。您无法从单个字母中检测到“英语”单词。至少您需要一本字典(就像在真正的字典中一样,而不是 Dictionary`,即使那样,您也无法确定。 -
对不起,实际上这些行是列表。
-
This similar question 有很多使用 langdetect、langid 或 NLTK 等软件包的答案。