我有一个数据集如下:
"485","AlterNet","Statistics","Estimation","Narnia","Two and half men"
"717","I like Sheen", "Narnia", "Statistics", "Estimation"
"633","MachineLearning","AI","I like Cars, but I also like bikes"
"717","I like Sheen","MachineLearning", "regression", "AI"
"136","MachineLearning","AI","TopGear"
等等之类的
我想要找出最常出现的词对,例如:
(Statistics,Estimation:2)
(Statistics,Narnia:2)
(Narnia,Statistics)
(MachineLearning,AI:3)
这两个单词可以以任何顺序出现,并且可以相距任意远。
有人能在Python中提供可能的解决方案吗?这是一个非常大的数据集。
非常感谢任何建议。
所以,这是我在@275365的建议下尝试的:
@275365 我尝试了从文件读取输入的以下方法:
def collect_pairs(file):
pair_counter = Counter()
for line in open(file):
unique_tokens = sorted(set(line))
combos = combinations(unique_tokens, 2)
pair_counter += Counter(combos)
print pair_counter
file = ('myfileComb.txt')
p=collect_pairs(file)
文本文件与原始文件具有相同数量的行,但每行仅具有唯一标记。 我不知道我错在哪里,因为当我运行此文件时,它会将单词拆分为字母,而不是按预期输出单词组合。 当我运行此文件时,它输出了拆分的字母,而不是单词组合,我不知道我犯了什么错误。
'two and a half men'
是一个 token 还是五个 token? - roippi(Statistics,TopGear)
是一对吗?或者我们可以假设只有同一行中的单词可以成对出现? - steveha