НЛП Фраза Поиск в Python - PullRequest
0 голосов
/ 29 мая 2018

Я изучал многие библиотеки, такие как whoosh / nltk, и такие концепции, как word net.

Однако я не могу решить свою проблему.Я не уверен, смогу ли я найти библиотеку для этого, или я должен построить ее, используя вышеупомянутые ресурсы.

Вопрос: Мой сценарий заключается в том, что мне нужно искать ключевые слова.Скажем, у меня есть ключевые слова, такие как «Торговый документ» / «Документы на покупку», и я должен искать их в небольшой книге на 10–15 страниц.

Подвох: Теперь они также могутбыть написано как «Продажи должны быть задокументированы» или «продажи компании должны быть записаны в текстовых файлах».(Для торгового документа - ключевое слово) Есть ли здесь подход, или мне придется что-то строить?

Код для POS-тегов следующий.Если нет доступной библиотеки, мне придется продолжить.

from nltk.tag import pos_tag
from nltk.tokenize import word_tokenize
from pandas import Series
import nltk
from nltk.corpus import wordnet

def tag(x):
    return pos_tag(word_tokenize(x))



synonyms = []
antonyms = []

for syn in wordnet.synsets("Sales document"):
    #print("Down2")
    print (syn)
    #print("Down")
    for l in syn.lemmas():
        print(" \n")
        print(l)
        synonyms.append(l.name())
        if l.antonyms():
            antonyms.append(l.antonyms()[0].name())

print(set(synonyms))
print(set(antonyms))

for i in synonyms:
    print(tag(i))

Обновление: Мы разработали программу на Python - не стесняйтесь ее раскошелиться.(Пун намеревался) Далее, Гит Зонд очень неопрятен, и теперь будет чистить его после завершения.В настоящее время он все еще находится в стадии разработки.

Ссылка .

1 Ответ

0 голосов
/ 23 июня 2018

Чтобы соответствовать вхождениям, таким как «Продажи должны быть задокументированы» , это можно сделать, увеличив параметр slop в объекте запроса Фраза Whoosh.

whoosh.query.Phrase (имя поля, слова, slop = 1, boost = 1.0, char_ranges = None) slop - количество слов, допустимое между каждым «словом» в фразе;значение по умолчанию 1 означает, что фраза должна точно соответствовать.

Вы также можете определить slop в Query следующим образом: "Sales should be documented"~5


Для соответствия второму примеру «продажи компании должны быть записаны в текстовых файлах» , это требует семантической обработки ваших текстов.Whoosh имеет низкоуровневую реализацию для словаря wordnet , позволяющую индексировать синонимы, но имеет только синонимы из одного слова.

...