Сегментация и коллокация
Я ищу новые идеи для двух функций, которые я реализую.
1.) Функция сегментации текста:
Ex:
User Query: Resolved Query:
----------- ---------------
It has lotsofwordstogether It has lots of words together
I am using normal recursion or DP solution using unigrams probability.
2.) Вид словосочетания:
Ex:
User Query: Resolved Query:
---------- ---------------
I like t shirts in Wal mart I like t-shirts in Walmart
Понятия не имею, как это сделать. Единственная идея, которая у меня есть на данный момент, - маркировать предложение и комбинировать не значащие токены с предыдущими токенами или следующими токенами, чтобы сформировать слова, которые можно сравнить с униграммами.
Эти решения медленны для моих требований (особенно для первого). Я хочу использовать эти функции вместе. В поисках лучших идей.
2 ответа
Я думаю, что стандартные подходы включают в себя буквы N-граммы.
Таким образом, "wal mart" станет "wal", "alm", "lma", "mar", "art".
Для задачи 1), находя границы слов, вы можете использовать существующие алгоритмы токенизации восточноазиатских языков. Они обычно включают применение скрытых марковских моделей:
http://dev.datasift.com/blog/using-japanese-tokenization-generate-more-accurate-insight
https://nlp.stanford.edu/IR-book/html/htmledition/tokenization-1.html
Я также могу подумать о применении алгоритма CKY (используемого для синтаксического анализа контекстно-свободных грамматик), особенно если вы можете найти словарь, который обеспечивает сегментирование слогов, и инвентаризацию слогов.
Проблема 2), я думаю, это просто пример исправления орфографии. Просто относитесь к пробелам так же, как к любому другому персонажу.
Я бы опубликовал больше ссылок, но мне не хватает репутации.
Это не легкие проблемы, удачи!