Обработката на естествен език е аспект на машинното обучение, който ви позволява да обработвате написани думи на машинен език. След това такива текстове стават променяеми и можете да изпълнявате изчислителни алгоритми върху тях, както желаете.
Логиката зад тази завладяваща технология изглежда сложна, но не е. И дори сега, със солидно разбиране на основното програмиране на Python, можете да създадете нов текстови процесор DIY с инструментариума за естествен език (NLTK).
Ето как да започнете с NLTK на Python.
Какво е NLTK и как работи?
Написано с Python, NLTK разполага с различни функции за манипулиране на низ. Това е универсална библиотека за естествени езици с огромно хранилище за модели за различни приложения на естествен език.
С NLTK можете да обработвате необработени текстове и да извличате значими функции от тях. Той също така предлага модели за анализ на текст, граматики, базирани на функции и богати лексикални ресурси за изграждане на цялостен езиков модел.
Как да настроите NLTK
Първо, създайте основна папка на проекта навсякъде на вашия компютър. За да започнете да използвате библиотеката NLTK, отворете терминала си до основната папка, която сте създали по -рано и създайте виртуална среда.
След това инсталирайте инструментариума за естествен език в тази среда, като използвате пип:
pip install nltk
NLTK обаче разполага с различни набори от данни, които служат като основа за нови модели на естествен език. За да получите достъп до тях, трябва да завъртите вградения изтегляч на данни NLTK.
Така че, след като успешно инсталирате NLTK, отворете вашия Python файл, като използвате всеки редактор на код.
След това импортирайте nltk модул и създайте екземпляр за изтегляне на данни, като използвате следния код:
pip install nltk
nltk.download ()
Изпълнението на горния код чрез терминала извежда графичен потребителски интерфейс за избор и изтегляне на пакети данни. Тук ще трябва да изберете пакет и да кликнете върху Изтегли бутон, за да го получите.
Всеки пакет данни, който изтегляте, отива в указаната директория, написана в Изтеглете Directory поле. Можете да промените това, ако желаете. Но се опитайте да поддържате местоположението по подразбиране на това ниво.
Свързани: Най -добрите безплатни редактори на кодове за писане на първото ви приложение
Забележка: Пакетите с данни се добавят към системните променливи по подразбиране. Така че можете да продължите да ги използвате за следващи проекти, независимо от средата на Python, която използвате.
Как да използвате NLTK токенизатори
В крайна сметка NLTK предлага обучени модели за токенизиране на думи и изречения. Използвайки тези инструменти, можете да генерирате списък с думи от изречение. Или преобразувайте абзац в разумен масив от изречения.
Ето пример за това как да използвате NLTK word_tokenizer:
внос nltk
от nltk.tokenize импортиране word_tokenize
word = "Това е примерен текст"
tokenWord = word_tokenizer (дума)
печат (tokenWord)
Изход:
['This', 'is', 'an', 'example', 'text']
NLTK също използва предварително обучен токенизатор на изречения, наречен PunktSentenceTokenizer. Той работи чрез разделяне на абзац в списък с изречения.
Нека да видим как работи това с абзац от две изречения:
внос nltk
от nltk.tokenize импортиране word_tokenize, PunktSentenceTokenizer
изречение = "Това е примерен текст. Това е урок за NLTK "
token = PunktSentenceTokenizer ()
tokenized_sentence = token.tokenize (изречение)
печат (tokenized_sentence)
Изход:
['Това е примерен текст.', 'Това е урок за NLTK']
Можете допълнително да символизирате всяко изречение в масива, генериран от горния код, като използвате word_tokenizer и Python за цикъл.
Примери за това как да използвате NLTK
Така че, въпреки че не можем да демонстрираме всички възможни случаи на използване на NLTK, ето няколко примера за това как можете да започнете да го използвате за решаване на реални проблеми.
Вземете дефиниции на думи и техните части на речта
NLTK разполага с модели за определяне на части от речта, получаване на подробна семантика и възможна контекстуална употреба на различни думи.
Можете да използвате wordnet модел за генериране на променливи за текст. След това определете неговото значение и част от речта.
Например, нека проверим възможните променливи за "Monkey:"
внос nltk
от nltk.corpus импортиране на wordnet като wn
print (wn.synsets ('маймуна'))
Изход:
[Synset ('monkey.n.01'), Synset ('imp.n.02'), Synset ('tamper.v.01'), Synset ('putter.v.02')]
Горният код извежда възможни алтернативи или синтаксиси на думи и части от речта за „Маймуна“.
Сега проверете значението на "Маймуна", като използвате определение метод:
Маймуна = wn.synset ('monkey.n.01'). Определение ()
Изход:
всеки от различните дългоопашати примати (с изключение на просимианците)
Можете да замените низа в скобите с други генерирани алтернативи, за да видите какво извежда NLTK.
The pos_tag моделът обаче определя частите на речта на една дума. Можете да използвате това с word_tokenizer или PunktSentenceTokenizer () ако имате работа с по -дълги абзаци.
Ето как работи това:
внос nltk
от nltk.tokenize импортиране word_tokenize, PunktSentenceTokenizer
word = "Това е примерен текст. Това е урок по NLTK "
token = PunktSentenceTokenizer ()
tokenized_sentence = token.tokenize (дума)
за i в tokenized_sentence:
tokenWordArray = word_tokenize (i)
partsOfSpeech = nltk.pos_tag (tokenWordArray)
печат (partsOfSpeech)
Изход:
[('This', 'DT'), ('is', 'VBZ'), ('an', 'DT'), ('example', 'NN'), ('text', 'NN'), ('.', '.')]
[('This', 'DT'), ('is', 'VBZ'), ('a', 'DT'), ('tutorial', 'JJ'), ('on', 'IN'), („NLTK“, „NNP“)]
Горният код сдвоява всяка токенизирана дума с речевия си маркер в кортеж. Можете да проверите значението на тези тагове Penn Treebank.
За по -чист резултат можете да премахнете точките в изхода с помощта на замени () метод:
за i в tokenized_sentence:
tokenWordArray = word_tokenize (i.replace ('.', ''))
partsOfSpeech = nltk.pos_tag (tokenWordArray)
печат (partsOfSpeech)
По -чист изход:
[('This', 'DT'), ('is', 'VBZ'), ('an', 'DT'), ('example', 'NN'), ('text', 'NN') ]
[('This', 'DT'), ('is', 'VBZ'), ('a', 'DT'), ('tutorial', 'JJ'), ('on', 'IN'), („NLTK“, „NNP“)]
Визуализиране на тенденциите на функциите с помощта на NLTK Plot
Извличането на функции от необработени текстове често е досадно и отнема много време. Но можете да видите най -силните определящи характеристики в текст, използвайки графиката на тенденцията за разпределение на честотата на NLTK.
NLTK обаче се синхронизира с matplotlib. Можете да използвате това, за да видите конкретна тенденция във вашите данни.
Кодът по -долу, например, сравнява набор от положителни и отрицателни думи в графика за разпределение, използвайки последните им две азбуки:
внос nltk
от nltk импортиране ConditionalFreqDist
Списъци с отрицателни и положителни думи:
негативи = [
„ненормално“, „премахване“, „отвратително“,
„отвратително“, „отвратително“, „мерзост“
]
положителни = [
„изобилие“, „изобилие“, „изобилие“,
„изобилен“, „достъпен“, „достъпен“
]
# Разделете елементите във всеки масив на етикетирани двойки кукли
# и комбинирайте двата масива:
pos_negData = ([("отрицателно", отрицателно) за отрицание в отрицателни)+[("положително", pos) за пози в положителни])
# Извлечете последните две азбуки от получения масив:
f = ((pos, i [-2:],) за (pos, i) в pos_negData)
# Създайте график за разпространение на тези азбуки
cfd = ConditionalFreqDist (f)
cfd.plot ()
Графикът за разпределение на азбуката изглежда така:
Разглеждайки внимателно графиката, думите завършват с ce, ds, le, nd, и nt имат по -голяма вероятност да бъдат положителни текстове. Но тези, които завършват с al, ly, На, и те по -вероятно са отрицателни думи.
Забележка: Въпреки че тук сме използвали самостоятелно генерирани данни, можете да получите достъп до някои от вградените набори от данни на NLTK с помощта на неговия четец на Corpus, като им се обадите от корпус клас на nltk. Може да искате да погледнете документация на корпусния пакет за да видите как можете да го използвате.
С появата на технологии като Alexa, откриване на спам, чатботове, анализ на настроенията и други, обработката на естествен език изглежда се развива в своята подчовешка фаза. Въпреки че в тази статия сме разгледали само няколко примера за това, което предлага NLTK, инструментът има по -напреднали приложения, по -високи от обхвата на този урок.
След като прочетете тази статия, трябва да имате добра представа как да използвате NLTK на базово ниво. Всичко, което ви остава да направите сега, е да приложите тези знания в действие сами!
Интересувате ли се от областта на машинното обучение? Започнете с тези библиотеки.
Прочетете Напред
- Програмиране
- Python
- Програмни езици
- Програмиране
Idowu е страстен за всичко умно технология и производителност. В свободното си време той играе с кодиране и превключва на шахматната дъска, когато му е скучно, но също така обича да се откъсва от рутината от време на време. Страстта му да показва на хората пътя около съвременните технологии го мотивира да пише повече.
Абонирайте се за нашия бюлетин
Присъединете се към нашия бюлетин за технически съвети, рецензии, безплатни електронни книги и изключителни оферти!
Щракнете тук, за да се абонирате