Получение всех слов и знаков препинания из английского текста

Что я хочу сделать:

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

Теперь я пытаюсь использовать treat gem (NLP для ruby), но с ним много проблем.

например в предложении

«Мир состоит не только из солнечного света и радуги».

Он делит не на два слова "ай" и "нет"

Может ли кто-нибудь предложить некоторые библиотеки или драгоценные камни, возможно, которые я могу реализовать с помощью jruby, где я могу без проблем просто отделять текст от слов и знаков препинания.

Или мб я не прав в своих представлениях и есть какие-то другие способы?


person Alexander Kochergin    schedule 04.01.2014    source источник
comment
Я исправил свои ошибки. Простите за это. Английский не мой родной язык.   -  person Alexander Kochergin    schedule 04.01.2014
comment
В качестве примечания, на самом деле это не английское слово, а сленг. Если именно с этим (и, возможно, с другими сокращениями) у вас возникли проблемы, это может пролить свет на то, с чего начать вносить изменения.   -  person Krease    schedule 04.01.2014
comment
Я вижу, но пользователь также может загружать текст со сленгом. И в этом суть правильного анализа.   -  person Alexander Kochergin    schedule 04.01.2014
comment
Скажи мне, как ты определяешь слово. если это что-то, что разделено пробелом, тогда вы можете использовать text.split()   -  person Krishna Prasad Varma    schedule 04.01.2014


Ответы (2)


Почему бы не начать с простого сканирования, где вы используете простое регулярное выражение, чтобы получить все слова из текста? http://ruby-doc.org/core-2.1.0/String.html#method-i-scan

Для английского регулярное выражение должно быть просто \w и некоторыми специальными символами, такими как ', которые вы указываете.

person Danny    schedule 04.01.2014

Пробовали ли вы использовать гем open-nlp от того же автора?

Пример там предполагает, что он делает то, что вы хотите:

OpenNLP.load

text      = "The death of the poet was kept from his poems."
tokenizer = OpenNLP::SimpleTokenizer.new
tokens    = tokenizer.tokenize(text).to_a
# => %w[The death of the poet was kept from his poems .]

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

person gmile    schedule 04.01.2014