gpt4 book ai didi

python - 从大型歌手中寻找最匹配的词

转载 作者:行者123 更新时间:2023-12-03 14:21:06 26 4
gpt4 key购买 nike

我有一个 Pandas 数据框,其中包含名为 Potential Word 的两列, Fixed Word . Potential Word列包含不同语言的单词,其中包含拼写错误的单词和正确的单词以及 Fixed Word列包含对应于 Potential Word 的正确单词.
下面我分享了一些样本数据


潜在词
固定词


例子
例子

皮波尔
人们

疙瘩
疙瘩

尤尼克
独特的


我的 vocab 数据框包含 600K 唯一行。
我的解决方案 :

key = given_word
glob_match_value = 0
potential_fixed_word = ''
match_threshold = 0.65
for each in df['Potential Word']:
match_value = match(each, key) # match is a function that returns a
# similarity value of two strings
if match_value > glob_match_value and match_value > match_threshold:
glob_match_value = match_value
potential_fixed_word = each
问题
我的代码的问题是,由于循环遍历大型词汇表,因此需要花费大量时间来修复每个单词。当词汇中漏掉一个词时,解决一个 10 到 12 个词的句子需要将近 5 或 6 秒的时间。匹配功能表现不错,因此优化的目标。
我需要优化的解决方案在这里帮助我

最佳答案

Information Retrieval (IR)的角度,你需要减少搜索空间。匹配given_word (如 key )针对所有 潜在词 s 绝对是低效的。
相反,您需要匹配合理数量的 候选人 .
要找到这样的候选人,您需要索引 潜在词 s 和 固定字 s。

from whoosh.analysis import StandardAnalyzer
from whoosh.fields import Schema, TEXT
from whoosh.index import create_in

ix = create_in("indexdir", Schema(
potential=TEXT(analyzer=StandardAnalyzer(stoplist=None), stored=True),
fixed=TEXT(analyzer=StandardAnalyzer(stoplist=None), stored=True)
))
writer = ix.writer()
writer.add_document(potential='E x e m p l e', fixed='Example')
writer.add_document(potential='p i p o l', fixed='People')
writer.add_document(potential='p i m p l e', fixed='Pimple')
writer.add_document(potential='l u n i k', fixed='unique')
writer.commit()
使用此索引,您可以搜索一些候选人。
from whoosh.qparser import SimpleParser

with ix.searcher() as searcher:
results = searcher.search(SimpleParser('potential', ix.schema).parse('p i p o l'))
for result in results[:2]:
print(result)
输出是
<Hit {'fixed': 'People', 'potential': 'p i p o l'}>
<Hit {'fixed': 'Pimple', 'potential': 'p i m p l e'}>
现在,您可以 match given_word只针对少数候选人,而不是全部 600K。
它并不完美,但是,这是不可避免的权衡以及 IR 的基本工作原理。尝试使用不同数量的候选人。

关于python - 从大型歌手中寻找最匹配的词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66115413/

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