2015-10-20 2 views
-1

Кто-нибудь знает инструмент морфологической реализации (желательно Java-вариант). Я работаю над проектом, и мне нужно понять правильный глагол «быть», если он предназначен для мужчины/женщины - единственного числа/множественного числа - первого лица/третьего лица и в отношении таких входов генерирует правильный глагол «быть». SimpleNLG - это идеальное программное обеспечение, которое содержит морфологическую реализацию, но оно предназначено только для английского и французского языков. Например: если функции являются мужскими первыми лицами, результатом будет «Я», если в функциях есть множественные лица третьего лица, результат будет быть «они».Морфологическая реализация для испанского языка

+0

Также опубликовано на [CS.SE] (http://cs.stackexchange.com/q/48568/755) и [Linguistics.SE] (http://linguistics.stackexchange.com/q/14751). Пожалуйста, не публикуйте тот же вопрос на нескольких сайтах] (http://meta.stackexchange.com/q/64068). У каждого сообщества должен быть честный ответ на вопрос, если никто не будет потрачен впустую. Если вы не получите удовлетворительного ответа через неделю или около того, не стесняйтесь отмечать для миграции. –

+0

Я просто удалил избыточность. –

ответ

1

Вы можете проверить FOMA, который является библиотекой C (он также доступен как автономный исполняемый файл для Windows). Он основан на вычислительной модели Kimmo Koskenniemi, которая использует преобразователи конечного состояния. Это версия с открытым исходным кодом xfst. Вы можете увидеть быстрый круговой курс here.

Очень легко использовать foma. This repo на github может служить образцом (ознакомьтесь с файлами spanish.lexc и spanish.foma). Если вы запустите Фома и поставить два сценария в том же каталоге, вы можете загрузить файл и проверить морфологический реализатор:

FOMA [0]: источник spanish.foma
Открытия файл «spanish.foma».
определено Слово: 1.6 kB. 2 состояния, 64 дуги, циклические.
определено Очистка: 276 байт. 1 состояние, 2 дуги, циклический.
Корень ... 5, A ... 2, N ... 2, V1 ... 65, V2 ... 65, V3 ... 65
Строительная лексика ...
Детерминирование ...
Минимизация ...
Сделано!
7.9 kB. 289 состояний, 441 дуга, 199 путей.
Определенный Lexicon: 7.9 kB. 289 состояний, 441 дуга, 199 путей. 9,2 kB. 290 состояний, 505 дуг, циклический.

Теперь хорошая вещь о FOMA заключается в том, что она двусторонняя. Он может одновременно реализовывать и анализировать морфологические формы. Если применить до он рассекает форму, но если применить вниз он выступает в качестве реализатора:

foma[1]: up      
apply up> leo      
leo+N+Sg       
leo+A+Sg       
leir+V+3C+PresenteIndicativo+1P+Sg 
leer+V+2C+PresenteIndicativo+1P+Sg 
lear+V+1C+PresenteIndicativo+1P+Sg 

В случае, чтобы быть, вот пример того, как использовать преобразователь в качестве реализатора :

foma[1]: down 
apply down> estar+V+1C+PresenteIndicativo+3P+Sg 
esta 

Помните, что вы определяете теги самостоятельно в начале сценария lexc, так что вы можете легко изменить или дополнить существующий сценарий в этом репо. Если вы действительно прочитаете документацию, вы быстро получите ее. Это очень удобно и легко использовать. Удачи!

+0

Я смог сделать все, что вы предложили, но до сих пор я не могу интегрировать его в свой Java-проект, есть ли у вас какие-либо идеи. Я пытался выполнить следующую команду «cat mytext.txt | flookup -x -i spanish.foma», где mytext.txt содержит «estar + V + 1C + PresenteIndicativo + 3P + Sg», а флаг -i должен выполнить операцию down –

+0

Дорогой Ахмед, боюсь, я не знаю, как вы должны включить его в Java, потому что я не Java-программист. Однако в Python и Windows я бы сделал что-то вроде 'subprocess.check_output ('type mytext.txt | flookup -x -i spanish.foma', shell = True)'. В Java должна быть аналогичная процедура. Вам нужно найти модуль os, который позволит вам выполнить программу в оболочке и отправить результат в вашу Java-программу. – Omid

+0

Хорошо, я попробую. благодаря –