привет мне нужен хороший пример для разработки НЛП с использованием Spacy Python - PullRequest
0 голосов
/ 23 января 2019

Я много искал в отношении spacy-библиотеки для NLP и многое узнал о spacy и NLP.

Но в настоящее время я хочу реализовать spacy, но я не нашел подходящего примера длясделай это.Может ли кто-нибудь провести меня через этот процесс или предоставить мне пример ссылки на spacy.

Я сослался на это: https://spacy.io/usage/

Или дайте мне любую другую библиотеку с работающим примером для разработки NLP.

Заранее спасибо!

1 Ответ

0 голосов
/ 23 января 2019

Хотя ваш вопрос весьма неясен, насколько я понимаю, вы хотите построить трубопровод NPL с SpaCY.Я могу провести вас через основные этапы, но это огромная область, и вам придется многое понять самостоятельно.Но после этого будет легче.

Итак, вам нужно взглянуть на документацию SpaCY API .

Основные шаги в любом конвейере NLPследующее:

  1. Определение языка (самоочевидно, если вы работаете с каким-либо набором данных, вы знаете, что это за язык, и вы можете адаптировать свой конвейер к нему).Когда вы знаете язык, вы должны загрузить правильные модели из SpaCY.Инструкции здесь .Давайте использовать английский для этого примера.В командной строке просто введите python -m spacy download en и затем импортируйте его в сценарий предварительной обработки, например:

    import spacy
    nlp = spacy.load('en')
    
  2. Токенизация - это процесс разбиения текста на слова.Недостаточно просто сделать text.split() (например, there's будет рассматриваться как одно слово, но на самом деле это два слова there и is).Так что здесь мы используем токенизаторы.В SpaCy вы можете сделать что-то вроде:

    nlp_doc = nlp(text)
    

, где text - ваш корпус набора данных или образец из набора данных.Вы можете прочитать больше об экземпляре документа здесь

Удаление пунктуации - довольно понятный процесс, выполняемый методом на предыдущем шаге.Чтобы удалить пунктуацию, просто наберите:

import re

# removing punctuation tokens
text_no_punct = [token.text for token in doc if not token.is_punct]

# remove punctuation tokens that are in the word string like 'bye!' -> 'bye'
REPLACE_PUNCT = re.compile("(\.)|(\;)|(\:)|(\!)|(\')|(\?)|(\,)|(\")|(\()|(\))|(\[)|(\])")
text_no_punct = [REPLACE_PUNCT.sub("", tok.text) for tok in text_no_punct]

POS-теги - сокращение от части речи.Это процесс разметки слова в тексте как соответствующей определенной части речи.Например:

A/DT Part-Of-Speech/NNP Tagger/NNP is/VBZ a/DT piece/NN of/IN
software/NN that/WDT reads/VBZ text/NN in/IN some/DT
language/NN and/CC assigns/VBZ parts/NNS of/IN speech/NN to/TO
each/DT word/NN ,/, such/JJ as/IN noun/NN ,/, verb/NN ,/,
adjective/NN ,/, etc./FW./.

, где прописные коды после косой черты являются стандартными тегами слова.Список тегов можно найти здесь

В SpaCy это уже делается путем помещения текста в экземпляр nlp.Вы можете получить теги с:

    for token in doc:
        print(token.text, token.tag_)

Морфологическая обработка: лемматизация - это процесс преобразования слов в лингвистически обоснованную базовую форму, называемую леммой:

nouns → singular nominative form
verbs → infinitive form
adjectives → singular, nominative, masculine, indefinitive, positive form

В SpaCy это также ужесделано для вас, поместив текст в nlp экземпляр.Вы можете получить лемму каждого слова:

    for token in doc:
        print(token.text, token.lemma_)

Удаление стоп-слов - стоп-слова - это слова, которые не вносят никакой новой информации или значения в предложение и могут быть опущены.Как вы уже догадались, это уже сделано для вас nlp экземпляром.Чтобы отфильтровать стоп-слова, просто наберите:

text_without_stopwords = [token.text for token in doc if not token.is_stop]
doc = nlp(' '.join(text_without_stopwords))

Теперь у вас есть чистый набор данных.Теперь вы можете использовать word2vec или GloVe предварительно обученные модели для создания векторов слов и ввода данных в какую-либо модель.Но давайте оставим это для другого поста.Надеюсь, это достаточно ясно:)

...