首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >words.words()中的word在Python中检查得太慢和不准确

words.words()中的word在Python中检查得太慢和不准确
EN

Stack Overflow用户
提问于 2020-11-16 22:16:07
回答 1查看 354关注 0票数 0

我有一个数据集,由两个列组成,一个是Myers-Briggs的人格类型,另一个是那个人的最后50条推特。我已经标记了,从列表中删除了URL和停止词,并对单词进行了归纳。

然后,我创建了一个最常见的单词的collections.Counter,我正在检查它们是否是nltk的有效英语单词。

问题是,检查这个词是否存在于语料库中需要花费太多的时间,而且我也认为这个词汇表中有很多单词被遗漏了。这是我的密码:

代码语言:javascript
复制
import nltk    
import collections
from nltk.corpus import words

# nltk.download("words")

# Creating a frequency Counter of all the words
frequency_counter = collections.Counter(df.posts.explode())
sorted_common_words = sorted(frequency_counter.items(), key = lambda pair: -pair[1])

words_lst = []
for i in range(len(sorted_common_words)):
    if sorted_common_words[i][1] > 1000:
        words_lst.append(sorted_common_words[i][0])

valid_words = []
invalid_words = []

valid_words = [word for word in words_lst if word in words.words()]
invalid_words = [word for word in words_lst if word not in words.words()]

我的问题是,invalid_words列表包含了一些有效的英语单词,如:

  1. f*ck
  2. changed
  3. surprised
  4. girlfriend
  5. avatar
  6. anymore

当然还有更多。即使手动检查words.words()中是否存在这些单词,也会返回False。我最初试图阻止我的文字,但这产生了一些词根,这看上去不对,这就是为什么我决定把它们混淆起来。

Python中是否有一个库,它包含所有英文单词的词干版本?我想这会大大加快我的剧本速度。

我最初的数据格式大约是9000行,清理数据集后,大约有超过500万个标记字和大约110.000个独特的单词。‘words.words()is containing 236736 words, so checking if those 110.000 words are withinwords.words()’将花费太多的时间。我检查了1000次,检查大约需要一分钟。这主要是因为Python只能在一个内核上运行,所以不能在所有可用的内核上并行操作。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-16 22:54:34

我建议这样的解决办法:

代码语言:javascript
复制
# your code as it was before
words_lst = []
for i in range(len(sorted_common_words)):
    if sorted_common_words[i][1] > 1000:
        words_lst.append(sorted_common_words[i][0])

import numpy as np

words_arr = np.array(words_lst,dtype=str)
words_dictionary = np.array(words.words(),dtype=str)

mask_valid_words = np.in1d(words_arr, words_dictionary)

valid_words = words_arr[mask_valid_words]
invalid_words = words_arr[~mask_valid_words]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64866522

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档