如何解决使用nltk
我在字典中发现了一些非英语单词(来自CountVectorizer),我想将其删除:
verified={'日本': '19 日本','له': 'إستعداد له','لسنا': 'القادم لسنا','غيتس': 'بيل غيتس','على': 'على إستعداد','بيل': 'بيل غيتس','الوباء': 'الوباء القادم','إستعداد': 'إستعداد له','és': 'koronavírus és','állnak': 'kik állnak','zu': 'könig zu','zero': 'agenda zero'}
我的尝试是使用nltk,特别是words
:
import nltk
words = set(nltk.corpus.words.words())
not_en_list = [x for x,v in verified.items() if v!='[]' if x not in words]
但是当我运行它时,没有应用任何更改。那里仍然是非英语单词。 请注意,我提供的示例是一个数据示例:我有成千上万个英语单词,但是我想删除一些非英语单词,而无需复制和粘贴列表。
解决方法
由于不修改任何现有数据结构,因此未应用任何更改。将创建not_en_list
,但不会修改verified
。请尝试此操作,否则请发布一个最小的工作示例。
raw = {'日本': '19 日本','له': 'إستعداد له','لسنا': 'القادم لسنا','غيتس': 'بيل غيتس','على': 'على إستعداد','بيل': 'بيل غيتس','الوباء': 'الوباء القادم','إستعداد': 'إستعداد له','és': 'koronavírus és','állnak': 'kik állnak','zu': 'könig zu','zero': 'agenda zero'}
words = set(['zero'])
verified = {k: v for k,v in raw.items() if k in words}
assert verified == {'zero': 'agenda zero'}
,
也许这可以帮助您:
import nltk
import ast
#nltk.download('words')
'''-> Remove HashTag if the word list has not been downloaded'''
dict_ = {'日本': '19 日本','zero': 'agenda zero'}
words = set(nltk.corpus.words.words())
new_string = ''.join(w for w in nltk.wordpunct_tokenize(str(dict_)) \
if w.lower() in words or not w.isalpha())
new_dic = ast.literal_eval(new_string)
new_dic = {k: v for k,v in new_dic.items() if k and v is not None}
print(new_dic)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。