Использование сервиса AI для распознавания вопроса о поле для поиска в свободном тексте? - PullRequest
0 голосов
/ 23 января 2020

Существует ли служба API, платная или неоплачиваемая (IBM Watson, Google Natural Language), которая может принять произвольное текстовое поле «задать вопрос» и преобразовать его в набор ключевых слов, которые будут использоваться для обычного поиска по ключевым словам ?

Например, если на моем веб-сайте есть поле поиска «Задайте вопрос о наших продуктах» и пользователь вводит «У вас есть красные платья?», Есть ли API, который мы можем интегрировать в наш код, который можно просто преобразовать это в "красное платье", которое мы затем просто вводим в наш обычный поиск по ключевым словам "красное платье"?

В идеале он может решать различные вопросы, такие как:

"Как вы возвращаете товар?" - вернуть товар
"Принимаете ли вы Mastercard?" - mastercard
"Где я могу найти синие туфли?" - синие туфли

1 Ответ

0 голосов
/ 26 января 2020

Вы можете извлечь куски существительного, а затем использовать их в качестве ключевых слов.
Например, используя 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]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...