Perl и NLP, разбирают имена из биографий - PullRequest
4 голосов
/ 15 июля 2010

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

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

Ответы [ 3 ]

4 голосов
/ 16 июля 2010

Извлечь имена из данных сложно.Есть множество решений.Для извлечения именованной сущности у вас есть следующий

  1. Наивный подход .Я помню, как смотрел на это и не впечатлился выводом.
  2. Словарь подход .Я использовал это, но много ложных негативов, и мне не очень нравится код под ним.
  3. Бинарный файл с открытым исходным кодом с интерфейсом perl (не рекомендуетсяЯ являюсь автором этой библиотеки cpan - и настраивать ее тоже нелегко)1019 *

    Net :: Calais - безусловно, лучшая ставка на скорость и точность.Если вам нужна базовая реализация с открытым исходным кодом, используйте библиотеку Стэнфорда.

1 голос
/ 15 июля 2010

Вы пытались искать CPAN?

http://search.cpan.org/search?query=NLP&mode=all

Я также пытался найти "Естественный язык" и нашел следующее, что вас может заинтересовать:

Lingua :: EN :: Tagger

Кроме того, если вы хотите свернуть свои собственные, в отношении НЛП, вы можете проверить Regexp :: Grammars .Это преемник Parse :: RecDesent.

0 голосов
/ 16 июля 2010

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

Один простой способ - проверить наличие двух слов с заглавными буквами:

if (/[A-Z][a-z]+\s+[A-Z][a-z]/) { ...

или проверьте заголовки:

if (/(?:Mr|Mrs|Ms|Dr)\.?\s+[A-Z][a-z]+/) { ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...