Сегментация английских слов в НЛП?

Я новичок в области NLP, но мое текущее исследование требует некоторого синтаксического анализа текста (или извлечения ключевых слов) из URL-адресов, например. поддельный URL,

http://ads.goole.com/appid/heads

На мой синтаксический анализ накладываются два ограничения,

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

  2. Appid можно разбить на две части; то есть «приложение» и «идентификатор», оба принимают семантическое значение в Интернете.

Я попробовал набор инструментов Stanford NLP и поисковую систему Google. Первый пытается классифицировать каждое слово по грамматическому значению, которого я и ожидаю. Движок Google показывает больше сообразительности в отношении appid, что дает мне предложения по поводу идентификатора приложения.

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


ОБНОВЛЕНИЕ:

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

Спасибо,

Джамин


person caesar0301    schedule 20.12.2013    source источник


Ответы (2)


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

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

http://jeremykun.com/2012/01/15/word-segmentation/

person aelfric5578    schedule 20.12.2013
comment
Я закончил учебник и обнаружил, что данный корпус (из текста книги) плохо работает с URL-адресом в Интернете (например, appid). Но это хорошая отправная точка. Поэтому я буду искать другие бесплатные корпуса помимо упомянутых несвободных данных Google-2006. Спасибо. - person caesar0301; 20.12.2013

Это может сделать модуль Python Wordsegment. Это лицензированный Apache2 модуль для сегментации английских слов, написанный на чистом Python и основанный на корпусе из триллиона слов.

На основе кода из главы «Данные корпуса естественного языка» Питера Норвига из книги «Красивые данные» (Segaran and Hammerbacher, 2009).

Файлы данных получены из Google Web Trillion Word Corpus, описанного Торстеном Брантсом и Алексом Францем, и распространяются Консорциумом лингвистических данных. Этот модуль содержит только часть этих данных. Данные униграммы включают только самые распространенные 333 000 слов. Точно так же данные биграмм включают только самые распространенные 250 000 фраз. Каждое слово и фраза написаны строчными буквами, а знаки препинания удалены.

Установка проста с pip:

$ pip install wordsegment

Просто вызовите segment, чтобы получить список слов:

>>> import wordsegment as ws
>>> ws.segment('http://ads.goole.com/appid/heads')
['http', 'ads', 'goole', 'com', 'appid', 'heads']

Как вы заметили, старый корпус не очень высоко оценивает «идентификатор приложения». Это нормально. Мы можем легко научить этому. Просто добавьте его в словарь bigram_counts.

>>> ws.bigram_counts['app id'] = 10.2e6
>>> ws.segment('http://ads.goole.com/appid/heads')
['http', 'ads', 'goole', 'com', 'app', 'id', 'heads']

Я выбрал значение 10.2e6, выполнив поиск Google по запросу «идентификатор приложения» и отметив количество результатов.

person GrantJ    schedule 02.09.2015
comment
Обратите внимание, что в последней версии (v1.0+) wordsegment код немного отличается: grantjenks.com/docs/wordsegment/using-a- different-corpus.html - person GrantJ; 30.09.2017