LINUX.ORG.RU

обработка естественных языков

 , ,


5

4

внезапно!

питон или ява? хочется конечно яву... какая либа круче всех?

чего хочу: хочу имея с вободной форме текст разбить его на полезные кусочки и сложить в базулю.

ну например:

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

2. на улице произошло столкновение двух клевых автомобилей.

что мы тут видим? есть ФИО, есть адреса, есть преступление, как будто есть даже марки машин.

и вот имея ворох таких документов хочется узнать сколько клевых парней прешило негодных баб в прошлом месяце и сколько ухайдакали ведер на районе.

вариант относительно простой, но трудоемкой: нашлепать в рукопашную кучу файлов с метками и грубо говоря структурой документа. ну типа:

<fio regexp/> <address regexp/> <action regexp/>

<marker fio/>, <marker adderess>, <marker action>

проблема в том, что количество таких шаблонов будет расти и их будет просто до черта. считай на каждую новую «свободную» форму свой новый шаблон. одно уныние.

а хочется чего-то более машинленинговово, чтоб OpenNLP или NLTK какой. хочется больше эвристики. как это правильно нынче делается?

Ответ на: комментарий от Weres

Потому что там все делается через консольное приложение, а хочется именно программно извлекать данные.

Patrick13
()

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

Вычленить через NLTK главные члены предложения. Глаголы сравнивать через word2vec. Топорно, легко и быстро.

Solace ★★
()

Нейронные сети научились в принципе читать специализированные тексты.

Вот это http://rb.ru/story/google-ai-london-metro/

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

Но пока ресурсов для произвольного текста пока не хватит.

psv1967 ★★★★★
()
Ответ на: комментарий от psv1967

ресурсов для произвольного текста пока не хватит.

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

Rastafarra ★★★★
() автор топика

и вот имея ворох таких документов хочется узнать сколько клевых парней прешило негодных баб в прошлом месяце и сколько ухайдакали ведер на районе.

из примера:

;;;...
;;; A car is another inamimate nameable thing.
(defineType Car (InanimateThing NameableThing)
  "Cars are nameable inanimate things.")

;;; Display the type structure again.
(showTypes)

;;; "agent bought object" will be represented
;;;    by the same frame as "agent wielded object."
(sameFrame 'Bought 'Wielded)

;;; Hank Morgan, the Connecticut Yankee in King Arthur's Court
;;;    bought a car named "Lizzie."
;;;
;;; The hasProperName term forces car1 to be a NameableThing.
;;; The Bought term forces car1 also to be an InanimateThing.
;;; Thus, there are two possibile sorts for car1: Weapon and Car.
;;; The user must pick.
(assert '(and (Isa ctYankee Man)
	  (hasProperName ctYankee Hank)
	  (hasProperName car1 Lizzie)
	  (Bought ctYankee car1)))

;;; SNePS can now infer that car1 is a car.
(ask '(Isa car1 Car))

;;; An example of a subtype of Proposition.
(defineType OralEvidence (Proposition)
  "Oral evidence is a kind of proposition.")

(defineType Event (Thing)
  "An Event is a kind of a Thing.")

;;; Display the type structure again.
(showTypes)

(defineSlot testimony :type OralEvidence
		:docstring "Oral evidence given in testimony.")

(defineSlot events :type Event
		:docstring "The events of a term.")

(defineCaseframe 'Proposition '('Testified agent testimony)
  :docstring "[agent] testified that [testimony]")

(defineCaseframe 'Proposition '('willOccur events)
  :docstring "[events] will occur")

;;; Hank Morgan testified that there would be a solar eclipse.
(assert '(Testified ctYankee
	  (willOccur SolarEclipse)))

;;; Although, by its own structure, (willOccur SolarEclipse) is a proposition,
;;;    its use makes it OralEvidence
(semantic-type-of (sneps3.core.build/build '(willOccur SolarEclipse) :Entity {}))

;;; See all the terms and their types.
(list-terms :types true)

это уже AST для фразы типа

Хэнк Морган это имя янки из «Янки при дворе короля Артура». Он купил машину и назвал её(анафора) «Лиззи». Этот янки(анафора) предсказал, что будет солнечное затмение

ну и парсер русского языка прикрутить. и тезаурус с синлетами.

и буримэ с институтками.

anonymous
()

хочется больше эвристики. как это правильно нынче делается?

Тематическое моделирование © с использованием ЛСА на основе вышеупомянутых тезаурусов и фразеологических словарей.

quickquest ★★★★★
()
Ответ на: комментарий от anonymous

ну и парсер русского языка прикрутить. и тезаурус с синлетами.

Не всегда работает, ибо классическая фраза «глокая куздра штеко будланула бокра и курдячит бокрёнка» ©, созданная для иллюстрации того, что многие семантические признаки слова можно понять из его морфологии, неоднозначна: «глокая» может трактоваться и как существительное, и как прилагательное, и как деепричастие.

quickquest ★★★★★
()
Последнее исправление: quickquest (всего исправлений: 1)
Ответ на: комментарий от quickquest

в интернете остро не хватает хавтушек :(

например что вообще взять для разбора? русский умеют далеко не все, или чего-то не понимаю? например я хочу LingPipe, как его убедить начиться в русский?

Rastafarra ★★★★
() автор топика
Ответ на: комментарий от quickquest

созданная для иллюстрации того, что многие семантические признаки слова можно понять из его морфологии,

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

linearisation
()
Ответ на: комментарий от quickquest

то есть, там изначально получается фрактальная структура: и в структуре предложений текста, и в его интерпретации, в смыслах, и в детерминизме, и в обыденном или ещё каком значениях.

просто мозг голографично может все эти структуры обойти, прикинуть «некоторые смысла не имеют» и отфильтровать, отсечь негодные ветки.

а последовательный алгоритм может и зациклиться, ибо понять смысл не может. ибо смысл раскрывается контекстно, а контекст проинтерпретировать тоже не может (см. рекурсию).

так может изначально было бы и более полезно с фракталом работать как с фракталом, с бесконечными списками?

anonymous
()
Ответ на: комментарий от linearisation

Причем оригинал был на английском.

Академик Л. В. Щерба — автор фразы «Глокая куздра штеко будланула бокра и курдячит бокрёнка». ©

Переводы есть на кучу языков, но на самом деле глоссолалия появилась у древних шаманов.

quickquest ★★★★★
()
Ответ на: комментарий от anonymous

то есть, там изначально получается фрактальная структура

Да, можно и так интерпретировать: фрактальное семантическое поле с идеографическим словарём. ©

Однако эти структуры тоже неоднозначны и зависят от выбранной лингвистической парадигмы © с разными контекстно-зависимыми лексемами.

quickquest ★★★★★
()
Ответ на: комментарий от quickquest

ЕМНИП, это был вольный перевод, так сказать, какой то фразы Хомского, а Хомский как раз иллюстрировал то, что по форме невозможно понять содержание.

linearisation
()
Ответ на: комментарий от linearisation

какой то фразы Хомского

Фраза Хомского «Бесцветные зеленые идеи бурно спят» © ортогональна фразе Щербы, но он тоже «мужик умный» и для лингвистики полезный :)

quickquest ★★★★★
()
Ответ на: комментарий от quickquest

Нет. Я читал, что эта фраза рассматривалась именно в том же контексте, что и фраза Хомского(ту что ты привел или нет — не помню). Это как раз был предмет дискуссии. Какой то наш лингвист утверждал, что вопреки утверждению Хомского, по форме фразы можно построить некоторую семантику, таким образом, вроде как, пытался опровергнуть тезис Хомского о полном разрыве между грамматикой и семантикой.

linearisation
()
Ответ на: комментарий от linearisation

Нет. Я читал, что эта фраза рассматривалась именно в том же контексте, что и фраза Хомского

Допускаю, что в том же контексте, но лексемы у них ортогональны. У Щербы — искусственные, у Хомского — естественные.

quickquest ★★★★★
()
Ответ на: комментарий от quickquest

функция аккермана через две взаимно рекурсивные частичные подфункции, или гипероператор или два фрактала, определённые друг через друга Ж:-)

и неподвижные точки: верхняя и нижняя грани. и комбинатор неподвижной точки, и решение уравнения когда грани в пределе стремятся к общему решению

вот и про смысл и форму всё тоже самое.

конкретный иероглиф, идеограмма, магическая руна :-) это этот самый предел, неподвижная точка смысла и формы :)))

anonymous
()
Ответ на: комментарий от anonymous

конкретный иероглиф, идеограмма, магическая руна :-) это этот самый предел, неподвижная точка смысла и формы :)))

Не обязательно, тут достаточно классической морфемы (класс) с морфой (реализация) — «неподвижной точкой смысла» в твоей интерпретации.

quickquest ★★★★★
()
Ответ на: комментарий от quickquest

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

вот например, в функции аккермана каждый раз пара (m,n) уменьшается (тело рекурсии), сохраняя лексикографический поррядок. можно записать функцию аккермана как ординал через функцию веблена, сохраняя порядок иерархией веблена. адресуя функции ординалами (порядковыми числами, трансфинитными, tumblers в Xanadu — универсальный многоуровневый URL структурного типа наподобие purple numbers в AUGMENT/NLS).

далее вроде бы логично в подобие лямбда-исчисления для полных решёток, какую-то языковую систему структурализма и универсальную грамматику типа порождающей семантики (где-то тут с точки зрения лямбда-исчисления семантика и форма должна нумероваться разными индексами, как упорядоченная пара (форма, смысл))

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

в общем, тут пока довольно смутно видится. хотя «структура, сохраняющая порядок» и уравнения с верхними/нижними гранями, неподвижными точками; какой-то метациклический автопоэзис, когда взаимно определяют друг друга — вот это кажется, довольно важно.

если коротко: форма и семантика взаимно рекурсивно определяют друг друга, и расставив индексы и занумеровав фрактальчик можно получить новое исчисление смысла смыслов, смысла форм, форм смысла, форм форм :-)))

осталось сообразить к чему это всё применить.

anonymous
()
Ответ на: комментарий от Myp3ik

в общем-то да, когда-то надо начинать ;)

Rastafarra ★★★★
() автор топика
Ответ на: комментарий от Rastafarra

С русским это к яндексу, последний оплот ИТ в этой стране. А так это нейронка (nlp4j) можно и русскому научить.

foror ★★★★★
()
Последнее исправление: foror (всего исправлений: 1)
Ответ на: комментарий от foror

Правда для этого тебе потребуется куча скучающей школоты (например, с лора) или студентоты для выставления оценок обучаемой нейронке. В одного слишком затратно.

foror ★★★★★
()
Последнее исправление: foror (всего исправлений: 1)
Ответ на: комментарий от foror

для выставления оценок обучаемой нейронке.

мне вообще разбить текст на кусочки +/- похожие, тут «учить» все больше и больше похоже на набор шаблонов.

нужно больше человекаф чтоб этих шаблонов нашлепать.

Rastafarra ★★★★
() автор топика
Последнее исправление: Rastafarra (всего исправлений: 1)
Ответ на: комментарий от Rastafarra

Это смехота на англоязычных текстах, а на русскоязычных вполне работает.

мне вообще разбить текст на кусочки +/- похожие

Эта задача решается в рамках кластеризации, для которой ненужны ни шаблоны, ни размеченные корпусы текстов.

gorky ★★
()
Ответ на: комментарий от gorky

решается в рамках кластеризации

это как это? линк?

ненужны ни шаблоны, ни размеченные корпусы текстов.

сейчас получается так что нужны.

Rastafarra ★★★★
() автор топика

чего хочу: хочу имея с вободной форме текст разбить его на полезные кусочки и сложить в базулю.

Natural Language Processing © (куча ссылок).

питон или ява? хочется конечно яву... какая либа круче всех?

Глянь примеры реализаций:
Gensim © (FREE Python library).
MALLET © (Java-based package for statistical natural language processing).

quickquest ★★★★★
()
Ответ на: комментарий от Rastafarra

https://ru.wikipedia.org/wiki/Кластерный_анализ

https://ru.wikipedia.org/wiki/K-means

При кластеризации документов они представляются в виде числовых векторов, а похожесть документов определяется косинусным расстоянием между их векторами. В следующих статьях эти понятия частично объясняются:

https://habrahabr.ru/post/252265/

https://habrahabr.ru/post/263171/

gorky ★★
()
Ответ на: комментарий от gorky

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

на кой черт мне их похожесть? :)

чем больше я читаю тем больше мне нужен какой-то markup language для описания структуры. если я правильно понимаю.

чтоб циклические структуры, чтоб паттерны для документов, чтоб привязка к русскому искаропки, конечно. чтоб знала про сокращения, например, могла в номера телефонов и чтоб можно было привязать свои лексемы каким-то простым способом, например какой-то номер типа «аа-бб/цц-01», чтоб оно не пыталось бить это на куски, а проставляла маркер «номер».

или я неправ?

Rastafarra ★★★★
() автор топика
Ответ на: комментарий от quickquest

MALLET © (Java-based package for statistical natural language processing).

у них у всех нет искаробочного русского и я пока чета слаб в привязке. разборщиков-то до черта, мне вот openNLP приглянулся. почему-то.

и хочется чтоб больше линков с практикой и лучше русскоязычной, в смысле разбор русского, с либами с языковыми пакетами.

Rastafarra ★★★★
() автор топика
Ответ на: комментарий от Rastafarra

на кой черт мне их похожесть? :)

В качестве документов можно взять куски текста, абзацы, предложения, что позволит «разбить текст на кусочки +/- похожие».

мне нужен какой-то markup language для описания структуры

Такой markup language обеспечивается с помощью https://ru.wikipedia.org/wiki/GLR-парсер и Яндекс написал такой markup language на основе protobuf - tomita-parser. Для его использования С++ не нужен. Вот короткий видеокурс: https://tech.yandex.ru/tomita/doc/video/index-docpage/

gorky ★★
()
Ответ на: комментарий от gorky

Для его использования С++ не нужен.

штука конечно прикольная, да, но запускать как бинарь..? как его натягивать на хипстерский mapreduce или что там щас в моде...?

Rastafarra ★★★★
() автор топика
Ответ на: комментарий от Rastafarra

Да, запускать как бинарь. А натягивать его никуда не нужно. Яндекс довольствуется скоростью обработки 80 мегабайт текста в час. Вот статья о том, как Яндекс отказался его куда-либо натягивать при анализе писем: Как Яндекс.Почта стала понимать, что вам нужно

gorky ★★
()
Ответ на: комментарий от winlook38

ну... не совсем.

оно все не для этого, не для «извлечения фактов», в терминологии яндекса.

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

много ручной работы, да. у меня теперь кривенький велосипед (томита яндекса покруче) и целый специалист обучения нейросети :)

дальше больше. разбор pdf-ов, например, штука оказалась тоже такая, веселая. шаг вправо, шаг влево и аццкие грабли...

развлекаемся. как че-нить еще будет непонятно --- приду :)

Rastafarra ★★★★
() автор топика
Последнее исправление: Rastafarra (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.