有没有付费或未付费的API服务(IBM Watson、Google Natural Language)可以接受免费文本"ask a there“字段并将其转换为一组关键字,以用于常规关键字搜索?
例如,如果我的网站有一个搜索字段“询问关于我们的产品的问题”,用户键入“你有红色连衣裙吗?”,有没有一种API可以集成到我们的代码中,只需将其转换为“红色连衣裙”,然后我们只需将其输入到我们常规的关键字搜索“红色连衣裙”中?
理想情况下,它可以处理各种问题,例如:
“如何退货?”--退货产品
“你们接受万事达卡吗?”--万事达卡
“我在哪里能找到蓝鞋?”--蓝鞋
发布于 2020-01-26 20:50:10
您可以提取名词块,然后将其用作关键字。
例如,使用Spacy,您可以按如下方式提取名词块:
import spacy
nlp = spacy.load('en_core_web_md')
def getNounChunks(doc):
inc = ['NN', 'NNP', 'NNPS', 'NNS', 'JJ', 'HYPH']
incn = ['NN', 'NNP', 'NNPS' ,'NNS']
excl = ['other', 'some', 'many', 'certain', 'various']
lspans = []
chunk =[]
for t in doc:
if t.text.lower() in excl:
continue
if chunk:
if chunk[-1].tag_ == 'HYPH':
chunk.append(t)
continue
if t.tag_ in inc:
if t.tag_ != 'JJ':
chunk.append(t)
else:
if not any([t.tag_ in incn for t in chunk]):
chunk.append(t)
else:
if chunk:
if any([t.tag_ in incn for t in chunk]):
lspans.append(doc[chunk[0].i:chunk[-1].i + 1])
chunk = list()
return(lspans)
questions = [
"How do you return a product?" ,
"Do you accept Mastercard?" ,
"Where can I find blue shoes?",
"Do you have red dresses?",]
for q in questions:
doc = nlp(q)
print(getNounChunks(doc))
#output:
#[product]
#[Mastercard]
#[blue shoes]
#[red dresses]https://stackoverflow.com/questions/59886256
复制相似问题