gpt4 book ai didi

python - 有效地模糊匹配文档集合中的每个句子

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:06:48 25 4
gpt4 key购买 nike

我正在尝试在大约 10 个文档的集合中构建相似句子的列表。我正在使用 Python 中的 FuzzyWuzzy 库来确定相似性,虽然我当前的算法有效,但它不是很有效并且需要很长时间才能运行。

for doc in docs:
for sentence in doc.sentences:
if len(sentence) > 8:
for document in docs:
if similarity(document,doc)["ratio"] < 100:
for sentn in document.sentences:
if len(sentn) > 8:
simil = similarity(sentence,sentn)
if simil["ratio"] > 60:
count+=1
print count
pairs.append([sentence,sentn,simil])

如果你不喜欢阅读那堆乱七八糟的代码,它会获取列表中的每个文档,然后遍历其中的每个句子,然后将那个句子与其他文档中的每个其他句子进行比较,这意味着它正在处理数十亿种可能的组合,其中许多组合的相似度低于 5%,这非常低效并且浪费了处理能力,是否有更有效的算法或方式来处理文档?

编辑:

在 Starks 的建议下,我添加了这行代码

if abs(len(sentence)-len(sentn))<10:
simil = similarity(sentence,sentn)
...

有明显的性能提升,但还是忍不住觉得算法效率低下

注意:这不是重复题,另一题是问如何判断两个句子是否相似,我已经会了,我需要知道的是如何高效地做很多次

最佳答案

该循环至少有两个问题导致了主要瓶颈。

首先,您要从第一个文档中提取第一句话,并将其与每个文档(包括文档本身)的每个句子进行检查。所以不是

 for doc in docs:
for sentence in doc.sentences:
if len(sentence) > 8:
for document in docs:

尝试

for doc in docs:
for document in docs:
for sentence in doc.sentences:
if len(sentence) > 8:

其次,

if similarity(document,doc)["ratio"] < 100:

不是很有效,你不需要用模糊匹配来判断两个文档是否相同,你可以直接使用

if document.text == doc.text:

关于python - 有效地模糊匹配文档集合中的每个句子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32338715/

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