gpt4 book ai didi

python 原生字符串标记匹配器

转载 作者:行者123 更新时间:2023-12-01 01:37:14 24 4
gpt4 key购买 nike

我编写了一个非常简单的 token 字符串搜索匹配器。但这有点太天真了,就像下面的代码一样,由于 'ar i z on a' 的标记化方式,它会带回艺术家列表中的所有艺术家。

import collections
import re

def __tokenised_match(artist, search_artist):
matches = []
if len(re.split(r'[\\\s/-]', search_artist)) > 1:
a = [artist.sanitisedOne, search_artist]
bag_of_words = [ collections.Counter(re.findall(r'\w+', words)) for words in a]
sumbags = sum(bag_of_words, collections.Counter())
print(sumbags)
for key, value in sumbags.items():
if len(re.findall(r'\b({k})\b'.format(k=key), search_artist)) > 0 and value > 1:
matches.append(artist)

if len(matches):
return matches


artists = [
{ 'artist': 'A R I Z O N A', 'sanitisedOne': 'a r i z o n a'},
{ 'artist': 'Wutang Clan', 'sanitisedOne': 'wutang clan'}
]

search_artist = 'a r i z o n a'

for artist in artists:
print(__tokenised_match(artist, search_artist))

这将创建一个像这样的包:

Counter({'a': 4, 'r': 2, 'i': 2, 'z': 2, 'o': 2, 'n': 2})

Counter({'a': 2, 'wutang': 1, 'clan': 1, 'r': 1, 'i': 1, 'z': 1, 'o': 1, 'n': 1})

这是一种边缘情况,但我想知道如何才能应对这种边缘情况。 'wutang clang' 匹配就可以了,但是当它是这样的单个字母时......有点多,并且会因为匹配两次而将每个艺术家带回来。

最佳答案

基本问题是您仅在一场比赛中返回成功。对于任何名称中容易匹配的标记的艺术家来说,这都会降低您的准确性。我们可以调整您的算法来匹配一定比例的单词,或者进行字母袋、交并比,但是......

我建议你使用更强一点的东西,比如 string similarity ,这在 Python 代码中很容易找到。由于已经打包,它比编写自己的解决方案更容易使用。

关于python 原生字符串标记匹配器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52280878/

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