gpt4 book ai didi

python - 关键词多词时高效搜索关键词

转载 作者:太空狗 更新时间:2023-10-30 01:25:54 26 4
gpt4 key购买 nike

我需要使用 python 高效地匹配字符串中的大量关键字(>1000000)。我发现了一些非常好的库,它们试图快速做到这一点:

1) FlashText ( https://github.com/vi3k6i5/flashtext )

2) Aho-Corasick算法等

但是我有一个特殊的要求:在我的上下文中,如果我的字符串是“XXXX 是 YYYY 的一个很好的指示”,关键字 say 'XXXX YYYY' 应该返回一个匹配项。请注意,此处“XXXX YYYY”并未作为子字符串出现,但 XXXX 和 YYYY 出现在字符串中,这对我来说已经足够匹配了。

我知道如何天真地去做。我正在寻找的是效率,还有更多好的库吗?

最佳答案

你问的听起来像a full text search任务。有一个名为 whoosh 的 Python 搜索包. @derek 的语料库可以在内存中进行索引和搜索,如下所示。

from whoosh.filedb.filestore import RamStorage
from whoosh.qparser import QueryParser
from whoosh import fields


texts = [
"Here's a sentence with dog and apple in it",
"Here's a sentence with dog and poodle in it",
"Here's a sentence with poodle and apple in it",
"Here's a dog with and apple and a poodle in it",
"Here's an apple with a dog to show that order is irrelevant"
]

schema = fields.Schema(text=fields.TEXT(stored=True))
storage = RamStorage()
index = storage.create_index(schema)
storage.open_index()

writer = index.writer()
for t in texts:
writer.add_document(text = t)
writer.commit()

query = QueryParser('text', schema).parse('dog apple')
results = index.searcher().search(query)

for r in results:
print(r)

这会产生:

<Hit {'text': "Here's a sentence with dog and apple in it"}>
<Hit {'text': "Here's a dog with and apple and a poodle in it"}>
<Hit {'text': "Here's an apple with a dog to show that order is irrelevant"}>

您还可以按照 How to index documents 中的说明使用 FileStorage 保留您的索引。 .

关于python - 关键词多词时高效搜索关键词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48258692/

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