我想要一种有效的 Pythonic 方法来计算文本中的相邻单词对。高效,因为它需要很好地处理更大的数据集。
计数的方式也很重要。
考虑这个简化的例子:
words_list = "apple banana banana apple".split()
我可以使用以下方法创建相邻对:
word_pair_list = zip(words_list[:-1], words_list[1:])
然后我可以使用 Python 来计算它们
word_pair_ctr = collections.Counter(word_pair_list)
这给了我
(('apple', 'banana'), 1)
(('banana', 'banana'), 1)
(('banana', 'apple'), 1)
请注意'apple'
和'apple'
不是相邻对。
但我希望成对的顺序不计算在内。这意味着('apple', 'banana')
and('banana', 'apple')
应该被认为是相同的,并且计数应该是
(('apple', 'banana'), 2)
(('banana', 'banana'), 1)
我找不到一种不需要我访问单词列表中每个项目的 Pythonic 方式,这对于较大的文本来说效率很低。
我也很乐意使用常见的 scipy、numpy 和 pandas 作为库。