@litehause

Как получить из текста именованные сущности?

Добрый день. Может кто сталкивался как с алгоритмами получения именнованых сущностей из текста например в тексте
"Apple выпустит вместо iPhone 7 Plus версию iPhone Pro" как можно получить слова Apple, iPhone 7 Plus, iPhone Pro или из текста "ВВС Франции сообщили о сопровождении двух Ту-160 над Ла-Маншем" получить ВВС, Франции, Ту-160, Ла-Маншем. Первое что приходит на ум вытаскивать вытаскивать слова которые начинаются с заглавной буквы не в начале предложения но это не подойдет только для имен и то только для тех что идут не вначале предложения. второй вариант делать поиск по словарю но опять как выносить фразы из текста например фразу "iPhone 7 Plus" вобщем буду признателен кто хоть чемнибуть поможет если будет какаянибуть готовая библиотека буду очень признателен
  • Вопрос задан
  • 225 просмотров
Пригласить эксперта
Ответы на вопрос 2
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Проще всего делать встречную выборку:
1. Выбирать существительные
2. Искать другие части речи (кроме существительных) и "вытравливать" из текста.
3. Объединить полученное в п.1 и п.2.
4. Очистить (по-возможности) результат п.3 от "мусора" (тут надо подумать: что-то с regex)
Можно попробовать мой лисапед (PHP) для выборки частей речи.

UPD: добавлю еще по примеру в вопросе:
1. Сканируем все слова, имеющие хотя бы одну заглавную букву, любую букву и цифру, отличающийся язык (от основного, границами - считаем смену языка на основной). (Результат - 1)
2. Выбираем все одинаковые слова, находящиеся одновременно и вначале предложения, и в середине любого предложения, имеющие хотя бы одну заглавную букву внутри слова в любом месте.
(Результат- 2)
3. Объединяем результат п.1 и п.2 - получаем Результат-3.
4. Ищем слова "результата-3"в тексте и если слева или справа от слова (игнорируя всё, кроме слов) есть парный ограничитель (кавычки, скобки и т.д.) - ищем второй ограничитель и все, что находится между этих ограничителей - приклеиваем к текущему и заносим в Результат-4. Иначе - заносим само текущее слово.
5. Результат-4 - будет содержать всё, что необходимо.
Ответ написан
@abcd0x00
Как сам определяешь (в мозгах), так и программу сделай.

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

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

Анализ реальных текстов - это сложная тема. Но если у тебя есть какие-то начальные условия, можно что-то написать.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы