LINUX.ORG.RU

Поиск синонимов с учётом контекста?

 ,


3

5

ЛОР, на тебе есть матлингвисты? Какие сейчас принято использовать алгоритмы для поиска синонимов к данному слову в данном контексте?

Например, «Михаил загрузил топку углём» и «Михаил загрузил 150 гигов взрослого порно» — слово одно, а значения разные. В первом случае подойдёт синоним «наполнил», во втором — «скачал» или типа того.

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

У меня есть подозрение, что гугл этого не делает. Скорей всего, он просто собирает статистику многословных запросов, сортирует их по частотности, и в соответствии с этим формирует выдачу. Вообще, это одна из центральных задач ИИ, она не была решена за полвека, несмотря на огромные вливания. Теперь только ходят слухи о каком то фэнтази — машин лернинг, дата майнинг, кукареку, ко-ко-ко. Никто этих лернингов в глаза не видел, но всяк считает себя обязанным высказаться на эту тему.

Ближе всего к этому, конечно, динамические объектно ориентированные языки программирования, они большое значение уделяют динамическим контекстам. Но чтобы вот так вот произвольную речь анализировать — это вряд ли:)

filequest ()

гигов взрослого порно

оговорка по фрейду:)

filequest ()

Пока посаны достигли вот этого вот уровня:

gudge: what a fuck are you doing here?
ALICE: Watch your language!

Можете пообщаться.

http://alice.pandorabots.com/

наверняка, на что нибудь, вроде how do you do ответ будет адекватным:)

filequest ()

Не слушай filequest'а. Задача не является нерешаемой. Конечно, уровня человека-носителя языка программы пока не достигают, и детали конкретных реализаций чаще всего являются секретами фирм, но работа в этом направлении идёт.

Начать общее образование стоит отсюда: https://en.wikipedia.org/wiki/Language_model

Что же касается конкретно твоей задачи, то тут нужно понять, что именно тебе нужно. В частности, ты собираешься использовать готовый тезаурус (и использовать контексты только для уточнения)? Или, наоборот, твоя задача и есть автоматическое составление тезаурусов?

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

это какая-то пиратская подделка, оригинал был пободрее.

алсо, оно просто не поняло тебя.

judge: Hey bitch! 
ALICE: Absolutely. 
judge: What's up? 
ALICE: I am chatting with clients on the internet. 
judge: I see. 
ALICE: I'm glad you understand it.
anonymous ()
Ответ на: комментарий от proud_anon

Задача не является нерешаемой

А я и не сказал, что она нерешаема. Например, если мы не встретили еще инопланетный разум, это не значит что его нет.

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

Либо, опиши алгоритм, выкати пример зачаточной реализации, чтобы все увидели, что это_может_работать.

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

В частности, ты собираешься использовать готовый тезаурус (и использовать контексты только для уточнения)?

А как можно использовать контексты для уточнения?

Но лучше, конечно, обойтись без готового тезауруса.

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

Given a text query it provides a list of related words

причем тут вычисление контекста и подбор в зависимости от контекста?

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

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

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

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

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

А, я понял о чем это. допустим, есть 2 словаря, строительный и математический, к примеру, имеем фразу, «построить график» наша задача вычислить значение слова построить. В одном случае, допустим, мы можем подменить слово построить словом начертить, а в другом — возвести. Пример неудачный, я знаю, но смысл понятен. Так вот. Ладно, какие-то зачатки уже есть, ок. И оставим в стороне вопрос производительности. Но, к примеру, твой бот встречает фразу, «построить график отпусков» — что он будет делать? насколько, в общем случае, он должен заглядывать вперед, для того, чтобы вычислить контекст?

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

И самое главное, основной вопрос ведь в том, как человеку, обладая такими скромными вычислительными скоростями, мгновенно ловить контекст в таких фразах как «утром ранним проскакал на розовом коне», «мертвый адмирал сойдет со стен к свечам и пустотой зеркал наполнит свой бокал»? Ведь речь зашла о ИИ. Задача ставилась именно такая, не как сделать тупой лукап по словарям, а выяснить, как человек безо всяких лукапов может «вычислять» это настолько эффективно, при том, что он очень хреново справляется с простейшей арифметикой, при больших числах. Разве не в этом задача?

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

скоростями, мгновенно

скоростями, удается мгновенно

//fixed

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

А как можно использовать контексты для уточнения?

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

Я в любом случае предполагаю, что в твоей задаче будет некоторый исследовательский момент. Если ты ждёшь ответа типа «надо применить алгоритм Шницель-Птуцера, и всё будет», то я такого не знаю. Но, может быть, кто-нибудь другой знает.

proud_anon ★★★★★ ()

Word2vec +/or обучение хитрого рода на RNN.
Unsupervised learning в таких задачах еще буксует, сможешь решить - станешь как минимум миллионером.

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

Слушай, обсуждаемая тема интересная, а ты написал уже 10 комментариев про то, что ТСу лучше её бросить, не начиная. Причём без всякой конкретики, чисто диванная философия. Я никого не игнорю, но возникает желание начать.

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

нет, ты снова сочиняешь. Обсуждаемая тема более чем интересна, и я не советовал бросать, я наоборот пытаюсь найти зацепку, на чем можно построить такое, я хоть какие-никакие версии выдвигаю, хоть какие то примитивные алгоритмы, мои ответы тебе — это наоборот стимулирование дальнейшего обсуждения и поиска возможных решений. А вот ты, как раз, пытаешься отмахнуться общими фразами, всячески избегая конкретики:)

filequest ()

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

ВордНет, различные онтологии, word2vec уже упоминали.

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

Поржал, ага. Ну то есть каким-то Glove'ом может и можно, но будет оно на выходе фиговое-фиговое.

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

Человеческий мозг оперирует пространствами большой размерности, поэтому «оптимизация» контекста дается легко - решение-то близко. И да, называть вычислительные способности мозга скромными - это из взглядов 60-80хх.

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

это из взглядов 60-80хх

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

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

Word2vec +/or обучение хитрого рода на RNN.

А как с помощью word2vec учитывать контекст? Просто найти синонимы к слову вроде несложно: переводим слово в вектор и ищем ближайших соседей. Но вектор для каждого слова всегда один и тот же, в независимости от контекста. Бывает какой-то контекстно-зависимый word2vec? Или как вообще это делается?

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

Чаще всего этого хватает. Контекст сильно переоценен как явление.
https://papers.nips.cc/paper/5945-teaching-machines-to-read-and-comprehend.pdf

Это если еще и LSTM.
Это если использовать концепцию слов-якорей.

https://cs.stanford.edu/~rishig/courses/ref/l9b.pdf

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

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

Действительно ИИ

ALICE: Are we still talking about tits?

judge: yes

ALICE: Sure, tits sounds like a good topic.

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

Слушай, обсуждаемая тема интересная, а ты написал уже 10 комментариев про то, что ТСу лучше её бросить, не начиная. Причём без всякой конкретики, чисто диванная философия.

filequest всегда такой. Я не игнорю, но на ЛОРе есть хорошая функция комментариев о пользователе

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

Во, уже тепло. Ещё нашёл topical word embeddings — что-то очень похожее. Тоже расширение skip-gram, там сначала для каждого слова извлекается вектор тем с помощью LDA, а потом нейросеть учится предсказывать слова из контекста на основе текущего слова и вектора тем. Буду, короче, играться.

HeipaVai1o ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.