首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用AI服务来识别免费文本搜索字段问题?

使用AI服务来识别免费文本搜索字段问题?
EN

Stack Overflow用户
提问于 2020-01-24 04:02:58
回答 1查看 34关注 0票数 0

有没有付费或未付费的API服务(IBM Watson、Google Natural Language)可以接受免费文本"ask a there“字段并将其转换为一组关键字,以用于常规关键字搜索?

例如,如果我的网站有一个搜索字段“询问关于我们的产品的问题”,用户键入“你有红色连衣裙吗?”,有没有一种API可以集成到我们的代码中,只需将其转换为“红色连衣裙”,然后我们只需将其输入到我们常规的关键字搜索“红色连衣裙”中?

理想情况下,它可以处理各种问题,例如:

“如何退货?”--退货产品

“你们接受万事达卡吗?”--万事达卡

“我在哪里能找到蓝鞋?”--蓝鞋

EN

回答 1

Stack Overflow用户

发布于 2020-01-26 20:50:10

您可以提取名词块,然后将其用作关键字。

例如,使用Spacy,您可以按如下方式提取名词块:

代码语言:javascript
复制
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]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59886256

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档