【问题标题】:find words out of vocabulary从词汇表中找出单词
【发布时间】:2022-01-02 10:42:34
【问题描述】:

我在熊猫数据框中有一些文本df['mytext'] 我还有一个词汇表vocab(单词列表)。

我正在尝试列出并计算每个文档的词汇表中的单词

我尝试了以下方法,但对于 10k 文档来说速度很慢。

如何快速有效地量化 pandas 文本集合中的词汇表外标记?

OOV_text=df['mytext'].apply(lambda s: ' '.join([ word  for word in s.split() if (word not in vocab) ]))
OOV=df['mytext'].apply(lambda s: sum([(word in vocab) for word in s.split()])/len(s.split()))

df.shape[0] 相当大 len(vocab) 很大 len(df.mytext 中的唯一词)

【问题讨论】:

  • 您是否必须知道每一行的计数,或者您可以为整个 DF 做到这一点?
  • 我需要逐行量化

标签: python pandas nlp vocabulary


【解决方案1】:

你可以使用

from collections import Counter
vocab=['word1','word2','word3','2021']
df['mytext_list']=df['mytext'].str.split(' ')
df['count']=df['mytext_list'].apply(lambda c:sum([Counter(c)[w] for w in vocab]))

它应该比您的解决方案更快,因为它使用 pandas 矢量化,然后使用 Counter 方法。

您可以跳过将帮助列保存为“mytest_list”以节省内存使用量。

【讨论】:

  • 这似乎比原来的慢
猜你喜欢
  • 2016-06-06
  • 1970-01-01
  • 2019-07-07
  • 2018-01-07
  • 2018-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多