Текстовые теги в обработке естественного языка

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

Например: у меня есть около 2000 новостей (в формате XML), помеченных названиями компаний и их уровнем релевантности (высокий/низкий) к истории [это было сделано вручную]. Для каждой новости у меня есть следующие поля:

идентификатор_истории, заголовок; рассказ_Текст; название компании; релевантность_уровень(H/L)

причем последние два поля вводятся вручную.

Мне нужно автоматизировать эту процедуру тегирования, т.е. мне нужно пометить входящие новости названиями компаний и их релевантностью с помощью High (H)/Low (L).

Примечание:

  1. некоторые из новостей не имеют отношения к какой-либо компании, поэтому они не помечены.

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

Мне интересно, какие алгоритмы машинного обучения мы можем использовать. Я очень новичок в обработке естественного языка. Поэтому я не могу понять, как решить проблему. Я понимаю, что мне нужно использовать классификацию с несколькими метками/многоклассами, но мне никогда не приходилось использовать классификацию с несколькими метками.

Любая помощь будет принята с благодарностью.

Спасибо.


person user62198    schedule 10.07.2014    source источник


Ответы (2)


<сильный>1. Вектор слов

Вероятно, лучший подход для вас — метод векторного пространства. В основном это:

- составить список из 25 000 наиболее распространенных слов в ваших документах; расположите их в фиксированном порядке (например, 0="the", 1="cat",...)

-для каждого документа сделать вектор длиной 25 000. Каждая запись — это подсчет того, сколько раз это слово появилось в документе. (Для эффективности используйте разреженное векторное представление)

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

Краткое обсуждение здесь: http://en.wikipedia.org/wiki/Vector_space_model

Презентация находится здесь (слайды по теме «Представления дистрибутивных слов»): http://web.stanford.edu/class/cs224u/

<сильный>2. Распознавание именованных объектов

Наиболее детальный подход к обработке естественного языка называется распознаванием именованных объектов; версия доступна здесь:

http://nlp.stanford.edu/software/CRF-NER.shtml

Алгоритм помечает слова как конкретные объекты (например, Apple Computer). Вы можете запустить такой алгоритм и проверить, упоминается ли выбранная вами компания. Алгоритмы NER будут хорошо идентифицировать упоминание Apple Computer в статье на совершенно другую тему (что было бы сложно для описанной выше техники векторного пространства, которая рассматривает документы как единое целое). Но похоже, что вам не нужен такой уровень детализации, поэтому первый подход, вероятно, лучший.

person Luke    schedule 11.07.2014
comment
ознакомьтесь с главами 14 и 15 здесь: www-nlp.stanford.edu/IR-book также, тем не менее, использование 25K слов в качестве того, что мы называем функциями, может быть или не быть излишним, и это одна из переменных, с которыми вам нужно поиграть, чтобы увидеть, что дает вам лучшую классификацию/маркировку в вашем тестовом наборе. - person arturomp; 11.07.2014
comment
Спасибо за оба предложения. Я собираюсь следовать вашему совету. Однако у меня есть дополнительный вопрос. В настоящее время список компаний статичен, что означает, что никакие дополнительные удаления и/или добавления названий не допускаются. Однако на самом деле этот список должен быть динамическим, то есть должно быть разрешено удаление и/или добавление имен. В таком случае, не является ли второй подход более подходящим? Ваш вклад будет принят с благодарностью. Спасибо. - person user62198; 11.07.2014
comment
Процесс обучения проходит довольно быстро, поэтому самый простой способ — просто запустить его снова, если вы добавляете или удаляете компании. Это предполагает, что у вас есть маркированные учебные документы для каждой новой компании. Если у вас его нет и вы не можете его приобрести, вам, возможно, придется пойти по второму пути. Однако первый подход быстрее и, вероятно, более надежен. (Кроме того, не забудьте отметить ответ выше как принятый, если он ответил на ваш вопрос.) - person Luke; 16.07.2014

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

person Scott Ge    schedule 01.07.2015
comment
я думаю ссылка битая!! - person Shivam Kotwalia; 22.08.2017