Рубрики
Без рубрики

Основы обработки естественного языка за 10 минут

Здравствуйте, там вы здесь, потому что вы также хотите выучить обработку естественного языка как PO … Теги с машинным обучением, NLP, Python, наукой данных.

Здравствуйте, там вы здесь, потому что вы также хотите выучить обработку естественного языка как можно быстрее, как и я. Давайте начнем первое, что нам нужно, это установить некоторую зависимость

  1. Python> 3.7 Скачать Отсюда

  2. Загрузите IDE или установите ноутбук Jupyter Чтобы установить ноутбук Jupyter, просто откройте свой CMD (терминал) и введите PIP Install Jupyter-Notebook После этого типа Jupyter ноутбук Чтобы запустить его, тогда вы можете увидеть, что ваш ноутбук открыт на http://127.0.0.1:888/token Отказ

  3. Установить пакеты PIP Установить NLTK.

NLTK: Это библиотека Python, которая мы можем использовать для выполнения всех задач NLP (stemming, Lemmatization и т. Д.) В этом блоге мы собираемся узнать о

  1. Токенизация
  2. Стоп-слова
  3. Stemming.
  4. Лемматизатор
  5. Wordnet.
  6. Часть метки речи
  7. Сумка слов, прежде чем учиться что-нибудь, давайте сначала понять NLP.

Натуральный язык относится к тому, как мы, люди, общающиеся друг с другом, и обработка, в основном идут данные в понятной форме. Таким образом, можно сказать, что NLP (обработка натурального языка) – это способ, который помогает компьютерам общаться с людьми на своем родном языке. Это одна из самых широких областей в исследованиях, потому что существует огромное количество данных, и из этих данных, большая сумма данных является текстовыми данными. Поэтому, когда существует так много данных, поэтому нам нужна некоторая техника, через которую мы можем обработать данные и извлечь из нее полезную информацию. Теперь у нас есть понимание того, что является NLP, давайте начнем понимать каждую тему один за другим.

1. Токенизация

Токенизация – это процесс разделения всего текста в токены. Это в основном из двух типов:

  1. Слово токенизатора (разделено словами)
  2. Предложение токенизатора (разделено предложением)
import nltk
from nltk.tokenize import sent_tokenize,word_tokenize
example_text = "Hello there, how are you doing today? The weather is great today. The sky is blue. python is awsome"
print(sent_tokenize(example_text))
print(word_tokenize(example_text))

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

##sent_tokenize (Separated by sentence)
['Hello there, how are you doing today?', 'The weather is great today.', 'The sky is blue.', 'python is awsome']

##word_tokenize (Separated by words)
['Hello', 'there', ',', 'how', 'are', 'you', 'doing', 'today', '?', 'The', 'weather', 'is', 'great', 'today', '.', 'The', 'sky', 'is', 'blue', '.', 'python', 'is', 'awsome']

2. Стоп-слова

В общем стоп-словах являются слова на любом языке, который не добавляет большого значения на предложение. В NLP Stopwords являются те слова, которые не важны при анализе данных. Пример: он, она, привет и т. Д.

Наша главная задача – удалить все стопорные слова для текста, чтобы сделать любую дальнейшую обработку. На английском языке на английском языке есть в общей сложности 179 секундов, используя NLTK, мы можем увидеть все стопорные слова на английском языке.

Нам просто нужно импортировать стоп-слова из библиотеки nltk.corpus Отказ

from nltk.corpus import stopwords
print(stopwords.words('english'))
######################
######OUTPUT##########
######################
['i', 'me', 'my', 'myself', 'we', 'our', 'ours', 'ourselves', 'you', "you're", "you've", "you'll", "you'd", 'your', 'yours', 'yourself', 'yourselves', 'he', 'him', 'his', 'himself', 'she', "she's", 'her', 'hers', 'herself', 'it', "it's", 'its', 'itself', 'they', 'them', 'their', 'theirs', 'themselves', 'what', 'which', 'who', 'whom', 'this', 'that', "that'll", 'these', 'those', 'am', 'is', 'are', 'was', 'were', 'be', 'been', 'being', 'have', 'has', 'had', 'having', 'do', 'does', 'did', 'doing', 'a', 'an', 'the', 'and', 'but', 'if', 'or', 'because', 'as', 'until', 'while', 'of', 'at', 'by', 'for', 'with', 'about', 'against', 'between', 'into', 'through', 'during', 'before', 'after', 'above', 'below', 'to', 'from', 'up', 'down', 'in', 'out', 'on', 'off', 'over', 'under', 'again', 'further', 'then', 'once', 'here', 'there', 'when', 'where', 'why', 'how', 'all', 'any', 'both', 'each', 'few', 'more', 'most', 'other', 'some', 'such', 'no', 'nor', 'not', 'only', 'own', 'same', 'so', 'than', 'too', 'very', 's', 't', 'can', 'will', 'just', 'don', "don't", 'should', "should've", 'now', 'd', 'll', 'm', 'o', 're', 've', 'y', 'ain', 'aren', "aren't", 'couldn', "couldn't", 'didn', "didn't", 'doesn', "doesn't", 'hadn', "hadn't", 'hasn', "hasn't", 'haven', "haven't", 'isn', "isn't", 'ma', 'mightn', "mightn't", 'mustn', "mustn't", 'needn', "needn't", 'shan', "shan't", 'shouldn', "shouldn't", 'wasn', "wasn't", 'weren', "weren't", 'won', "won't", 'wouldn', "wouldn't"]

Чтобы удалить стоп-слова для определенного текста

from nltk.corpus import stopwords
text = 'he is a good boy. he is very good in coding'
text = word_tokenize(text)
text_with_no_stopwords = [word for word in text if word not in stopwords.words('english')]
text_with_no_stopwords
##########OUTPUT##########
['good', 'boy', '.', 'good', 'coding']

3. Stemming.

Stemming – это процесс уменьшения слова к своему слору стебля, который прикрепляется к сустановкам и преформам или корням слов, известных как лемма. По простым словам, можно сказать, что stemming – это процесс удаления множественного числа и прилагательных от слова. Пример: Любимый → Любовь, учиться → Учить В Python мы можем реализовать stemming, используя Porterstemmer Отказ Мы можем импортировать его из библиотеки NLTK.Stem Отказ

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

from nltk.stem import PorterStemmer
ps = PorterStemmer()    ## Creating an object for porterstemmer
example_words = ['earn',"earning","earned","earns"]  ##Example words
for w in example_words:
    print(ps.stem(w))    ##Using ps object stemming the word
##########OUTPUT##########
earn
earn
earn
earn
Here we can see that earning,earned and earns are stem to there lemma or root word earn.

4. Лемматизация

Лемматизация обычно относится к тому, чтобы делать вещи правильно с использованием словарного запаса и морфологического анализа слов, обычно стремясь удалить только инфицированные окончания, и для возврата основания или словарной формы слова, которое известно как лемма. Проще говоря, лемматизация делает такую же работу, что и stemming, разница состоит в том, что лемматизация возвращает значимое слово. Пример: История stemming → Историки Лемматизация истории → История

Он в основном используется при проектировании Chatbots, Q & A Bots, прогноз текста и т. Д.

from nltk.stem import WordNetLemmatizer
lemmatizer = WordNetLemmatizer() ## Create object for lemmatizer
example_words = ['history','formality','changes']
for w in example_words:
    print(lemmatizer.lemmatize(w))

#########OUTPUT############
----Lemmatizer-----
history
formality
change
-----Stemming------
histori
formal
chang

5. Wordnet.

Wordnet – это лексическая база данных I.E. Словарь для английского языка, специально разработанного для обработки натурального языка. Мы можем использовать Wordnet для поиска синонимов и антонимов. В Python мы можем импортировать WordNet из nltk.corpus Отказ Код для поиска синоним и антоним для данного слова

from nltk.corpus import wordnet
synonyms = []   ## Creaing an empty list for all the synonyms
antonyms =[]    ## Creaing an empty list for all the antonyms
for syn in wordnet.synsets("happy"): ## Giving word 
    for i in syn.lemmas():        ## Finding the lemma,matching 
        synonyms.append(i.name())  ## appending all the synonyms       
        if i.antonyms():
            antonyms.append(i.antonyms()[0].name()) ## antonyms
print(set(synonyms)) ## Converting them into set for unique values
print(set(antonyms))
#########OUTPUT##########
{'felicitous', 'well-chosen', 'happy', 'glad'}
{'unhappy'}

6. Часть метки речи

Это процесс преобразования предложения в формы – список слов, список кортежей (где каждый кортеж имеет форму (слово, тег)). Тег в этом случае – это часть речевого тега и означает, является ли слово существительным, прилагательным, глаголом и т. Д.

Часть списка речевого тега

 CC coordinating conjunction
 CD cardinal digit
 DT determiner
 EX existential there (like: "there is" … think of it like "there")
 FW foreign word
 IN preposition/subordinating conjunction
 JJ adjective 'big'
 JJR adjective, comparative 'bigger'
 JJS adjective, superlative 'biggest'
 LS list marker 1)
 MD modal could, will
 NN noun, singular 'desk'
 NNS noun plural 'desks'
 NNP proper noun, singular 'Harrison'
 NNPS proper noun, plural 'Americans'
 PDT predeterminer 'all the kids'
 POS possessive ending parent's
 PRP personal pronoun I, he, she
 PRP possessive pronoun my, his, hers
 RB adverb very, silently,
 RBR adverb, comparative better
 RBS adverb, superlative best
 RP particle give up
 TO to go 'to' the store.
 UH interjection errrrrrrrm
 VB verb, base form take
 VBD verb, past tense took
 VBG verb, gerund/present participle taking
 VBN verb, past participle taken
 VBP verb, sing. present, non-3d take
 VBZ verb, 3rd person sing. present takes
 WDT wh-determiner which
 WP wh-pronoun who, what
 WP possessive wh-pronoun whose
 WRB wh-abverb where, when

В Python мы можем сделать POS Tagging, используя nltk.pos_tag Отказ

import nltk
nltk.download('averaged_perceptron_tagger')
sample_text = '''
An sincerity so extremity he additions. Her yet there truth merit. Mrs all projecting favourable now unpleasing. Son law garden chatty temper. Oh children provided to mr elegance marriage strongly. Off can admiration prosperous now devonshire diminution law.
'''
from nltk.tokenize import word_tokenize
words = word_tokenize(sample_text)
print(nltk.pos_tag(words))
################OUTPUT############
[('An', 'DT'), ('sincerity', 'NN'), ('so', 'RB'), ('extremity', 'NN'), ('he', 'PRP'), ('additions', 'VBZ'), ('.', '.'), ('Her', 'PRP$'), ('yet', 'RB'), ('there', 'EX'), ('truth', 'NN'), ('merit', 'NN'), ('.', '.'), ('Mrs', 'NNP'), ('all', 'DT'), ('projecting', 'VBG'), ('favourable', 'JJ'), ('now', 'RB'), ('unpleasing', 'VBG'), ('.', '.'), ('Son', 'NNP'), ('law', 'NN'), ('garden', 'NN'), ('chatty', 'JJ'), ('temper', 'NN'), ('.', '.'), ('Oh', 'UH'), ('children', 'NNS'), ('provided', 'VBD'), ('to', 'TO'), ('mr', 'VB'), ('elegance', 'NN'), ('marriage', 'NN'), ('strongly', 'RB'), ('.', '.'), ('Off', 'CC'), ('can', 'MD'), ('admiration', 'VB'), ('prosperous', 'JJ'), ('now', 'RB'), ('devonshire', 'VBP'), ('diminution', 'NN'), ('law', 'NN'), ('.', '.')]

7. Сумка слов

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

Для преобразования данных в векторы мы используем некоторые предопределенные библиотеки в Python.

Давайте посмотрим, как работает векторное представление

sent1 = he is a good boy
sent2 = she is a good girl
sent3 = boy and girl are good 
        |
        |
  After removal of stopwords , lematization or stemming
sent1 = good boy
sent2 = good girl
sent3 = boy girl good  
        | ### Now we will calculate the frequency for each word by
        |     calculating the occurrence of each word
word  frequency
good     3
boy      2
girl     2
         | ## Then according to their occurrence we assign o or 1 
         |    according to their occurrence in the sentence
         | ## 1 for present and 0 fot not present
         f1  f2   f3
        girl good boy   
sent1    0    1    1     
sent2    1    0    1
sent3    1    1    1
### After this we pass the vector form to machine learning model

Вышеуказанный процесс можно сделать с использованием CountVectorizer в Python, мы можем импортировать то же самое из Sklearn.feature_Extraction.Text.

Код для реализации CountVectorizer В питоне

import pandas as pd
sent = pd.DataFrame(['he is a good boy', 'she is a good girl', 'boy and girl are good'],columns=['text'])
corpus = []
for i in range(0,3):
    words = sent['text'][i]
    words  = word_tokenize(words)
    texts = [lemmatizer.lemmatize(word) for word in words if word not in set(stopwords.words('english'))]
    text = ' '.join(texts)
    corpus.append(text)
print(corpus)   #### Cleaned Data
from sklearn.feature_extraction.text import CountVectorizer
cv = CountVectorizer() ## Creating Object for CountVectorizer
X = cv.fit_transform(corpus).toarray()
X  ## Vectorize Form 
############OUTPUT##############
['good boy', 'good girl', 'boy girl good']
array([[1, 0, 1],
       [0, 1, 1],
       [1, 1, 1]], dtype=int64)

Поздравляем 👍, Теперь вы знаете основы NLP

Оригинал: “https://dev.to/abhayparashar31/basics-of-natural-language-processing-in-10-minutes-5fmg”