我的目标是创建一个基本程序,从语义上比较字符串并决定哪个字符串与哪个字符串更相似(就语义而言)。现在我不想从头开始构建一个新的(doc2vec?)在NTLK
或在SKlearn
或在{
具体来说,我选择测试ParallelDots AI API
,因此我用python编写了以下程序:
import paralleldots
api_key = "*******************************************"
paralleldots.set_api_key(api_key)
phrase1 = "I have a swelling on my eyelid"
phrase2 = "I have a lump on my hand"
phrase3 = "I have a lump on my lid"
print(phrase1, " VS ", phrase3, "\n")
print(paralleldots.similarity(phrase1, phrase3), "\n\n")
print(phrase2, " VS ", phrase3, "\n")
print(paralleldots.similarity(phrase2, phrase3))
这是我从API得到的响应:
^{pr2}$这种反应让我相当失望。很明显
I have a lump on my lid
在语义上几乎与短语相同
I have a swelling on my eyelid
它也与短语有关
I have a lump on my hand
因为他们指的是肿块,但显然它根本不像前一个那么接近。然而,ParallelDots AI API
输出的结果几乎完全相反。在
如果我是对的,ParallelDots AI API
是语义分析中最流行的api之一,还有Dandelion API
等其他api,但它的结果却令人失望。我预期这些api使用一些丰富的同义词数据库。我也用这三个短语测试了Dandelion API
,但结果也很差(实际上它们甚至更糟)。在
我可以在上面的程序中修复什么来检索更合理的结果?在
在语义上有没有比字符串更快的方法?在
我是ParallelDots的数据科学家之一。虽然不幸的是,您没有得到预期的结果,但请注意,通过API提供的通用模型都是在新闻和twitter等公开可用的数据集上进行培训的。在
以语义相似度API为例,我们对其进行了新闻语料库的训练,在阅读一般性新闻文章时,不太可能提取出肿块和肿胀的相关性。在
正是“块”这个词在不同的语境下在英语中有着如此多的不同含义,这使得模型具有很强的数据依赖性。例如,在金融界,块更接近于sum、投资等
如果您试图在域数据上找到语义相关性,我建议您使用ParallelDots企业服务来定制数据上的语义相关模型。您需要大量未标记的数据来进行定制,并且您将受益于更高的准确性,这只会随着更多的数据被迭代地添加到模型中而得到提高。在
我将用一个一般性的注释来结束这个答案,当软件开发人员倾向于像人工智能这样的服务时,他们在本质上是概率的。作为一名软件工程师,当结果不是我们对一组输入的期望值时,我们被训练去做故障排除,然而在机器学习中;我们倾向于在足够大的样本上测试一个模型,然后再尝试调试它并得出结论。我将鼓励软件开发人员建立一个测试集,并在其上运行AI模型,以找到准确度指标,并评估模型是否对他们的数据集有用。在
相关问题 更多 >
编程相关推荐