Здравствуйте, там вы здесь, потому что вы также хотите выучить обработку естественного языка как можно быстрее, как и я. Давайте начнем первое, что нам нужно, это установить некоторую зависимость
Python> 3.7 Скачать Отсюда
Загрузите IDE или установите ноутбук Jupyter Чтобы установить ноутбук Jupyter, просто откройте свой CMD (терминал) и введите PIP Install
Jupyter-Notebook
После этого типаJupyter ноутбук
Чтобы запустить его, тогда вы можете увидеть, что ваш ноутбук открыт наhttp://127.0.0.1:888/token
ОтказУстановить пакеты
PIP Установить NLTK.
NLTK: Это библиотека Python, которая мы можем использовать для выполнения всех задач NLP (stemming, Lemmatization и т. Д.) В этом блоге мы собираемся узнать о
- Токенизация
- Стоп-слова
- Stemming.
- Лемматизатор
- Wordnet.
- Часть метки речи
- Сумка слов, прежде чем учиться что-нибудь, давайте сначала понять NLP.
Натуральный язык относится к тому, как мы, люди, общающиеся друг с другом, и обработка, в основном идут данные в понятной форме. Таким образом, можно сказать, что NLP (обработка натурального языка) – это способ, который помогает компьютерам общаться с людьми на своем родном языке. Это одна из самых широких областей в исследованиях, потому что существует огромное количество данных, и из этих данных, большая сумма данных является текстовыми данными. Поэтому, когда существует так много данных, поэтому нам нужна некоторая техника, через которую мы можем обработать данные и извлечь из нее полезную информацию. Теперь у нас есть понимание того, что является NLP, давайте начнем понимать каждую тему один за другим.
1. Токенизация
Токенизация – это процесс разделения всего текста в токены. Это в основном из двух типов:
- Слово токенизатора (разделено словами)
- Предложение токенизатора (разделено предложением)
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”