gpt4 book ai didi

Python - 比较多个文本文件中的 n-gram

转载 作者:太空宇宙 更新时间:2023-11-03 12:07:05 24 4
gpt4 key购买 nike

第一次发布者 - 我是编程技能有限的 Python 新手。最终,我试图在同一目录中找到的众多文本文档中识别和比较 n-gram。我的分析有点类似于抄袭检测——我想计算可以在其中找到特定 n-gram 的文本文档的百分比。现在,我正在尝试一个更大问题的更简单版本,尝试比较两个文本文档中的 n-gram。我在识别 n-gram 时没有问题,但我很难比较这两个文档。有没有办法将 n-grams 存储在列表中以有效地比较两个文档中存在哪些?这是我到目前为止所做的(原谅天真的编码)。作为引用,我在下面提供了基本句子,而不是我在代码中实际阅读的文本文档。

import nltk
from nltk.util import ngrams

text1 = 'Hello my name is Jason'
text2 = 'My name is not Mike'

n = 3
trigrams1 = ngrams(text1.split(), n)
trigrams2 = ngrams(text2.split(), n)

print(trigrams1)
for grams in trigrams1:
print(grams)

def compare(trigrams1, trigrams2):
for grams1 in trigrams1:
if each_gram in trigrams2:
print (each_gram)
return False

感谢大家的帮助!

最佳答案

compare 函数中使用列表 say common。将每个 ngram 附加到两个 trigrams 共有的列表中,最后将列表返回为:

>>> trigrams1 = ngrams(text1.lower().split(), n)  # use text1.lower() to ignore sentence case.
>>> trigrams2 = ngrams(text2.lower().split(), n) # use text2.lower() to ignore sentence case.
>>> trigrams1
[('hello', 'my', 'name'), ('my', 'name', 'is'), ('name', 'is', 'jason')]
>>> trigrams2
[('my', 'name', 'is'), ('name', 'is', 'not'), ('is', 'not', 'mike')]
>>> def compare(trigrams1, trigrams2):
... common=[]
... for grams1 in trigrams1:
... if grams1 in trigrams2:
... common.append(grams1)
... return common
...
>>> compare(trigrams1, trigrams2)
[('my', 'name', 'is')]

关于Python - 比较多个文本文件中的 n-gram,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27412881/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com