машинное обучение, искусственный интеллект и компьютерная лингвистика - PullRequest
0 голосов
/ 23 апреля 2011

Я хотел бы поговорить с людьми, которые имеют опыт в машинном обучении, компьютерной лингвистике или искусственном интеллекте в целом, но на следующем примере:

• Какое существующее программное обеспечение вы бы применили для управляемой попытки создать что-то вроде google translate с помощью статистики лингвистического машинного обучения? (Не поймите меня неправильно, я не хочу просто делать это, а просто пытаюсь нарисовать концептуальную основу для чего-то самого сложного в этой области, что бы вы подумали, если бы у вас была возможность возглавить команду? собираюсь реализовать такое ...)

• Какие существующие базы данных? Какая технология баз данных для хранения результатов, когда это терабайты данных

• Какие языки программирования кроме C ++?

• Apache mahunt?

• И как эти программные компоненты будут работать вместе, чтобы обеспечить работу в целом?

Ответы [ 5 ]

3 голосов
/ 25 апреля 2011

Что касается выбора языка, по крайней мере для прототипирования, я бы предложил Python. Он пользуется большим успехом в обработке естественного языка, так как поставляется с большой библиотекой инструментов с научными вычислениями, анализом текста и машинным обучением. И последнее, но не менее важное: действительно легко вызывать скомпилированный код (C, C ++), если вы хотите использовать существующие инструменты.

В частности, обратите внимание на следующие модули:

  • NLTK , инструментарий естественного языка

  • scikits.learn , машинное обучение на Python

Презентация Оливье Гризеля по анализу текста с помощью этих инструментов может пригодиться.

Отказ от ответственности : Я являюсь одним из разработчиков ядра scikits.learn.

3 голосов
/ 23 апреля 2011

Какое существующее программное обеспечение вы бы применили для управляемой попытки создать что-то вроде google translate с помощью статистического лингвистического машинного обучения

Если ваша единственная цель - создание программного обеспечения, которое переводит, то я быпросто используйте Google Language API: это бесплатно, так зачем изобретать велосипед?Если ваша цель - создать переводчик, похожий на Google, для ознакомления с машинным обучением, то вы на неверном пути ... попробуйте более простую проблему.

Какая база данных)?

Обновление:
Зависит от размера вашего корпуса: если он огромный, то я бы пошел с hadoop (так как вы упомянули mahout) ... в противном случаепойти со стандартной базой данных (SQL Server, MySQL и т. д.).

Оригинал:
Я не уверен, какие базы данных вы можете использовать для этого, но если все остальное терпит неудачувы можете использовать Google переводчик для создания своей собственной базы данных ... однако, последняя внесет предвзятость в отношении переводчика Google, и любые ошибки, которые делает Google, приведут к тому, что ваше программное обеспечение (по крайней мере) будет иметь те же ошибки.

На каких языках программирования кроме C ++?

Что бы вы ни чувствовали наиболее комфортно ... конечно, C ++ - это вариант, но вам может быть легче с Java или C #.Разработка на Java и C # намного быстрее, поскольку с самого начала в эти языки встроено МНОГО функциональности.

Apache mahunt?

Если у вас огромныйнабор данных ... вы могли бы.

Обновление:
В общем, если размер вашего корпуса действительно большой, то я бы определенно использовал надежную комбинацию, такую ​​как mahout / hadoop.Оба они созданы именно для этой цели, и вам будет очень трудно «продублировать» всю их работу, если за вами не будет огромной команды.

И как будут эти программные компоненты?работать вместе, чтобы усилить усилия в целом?

Кажется, что вы на самом деле пытаетесь ознакомиться с машинным обучением ... Я бы попробовал что-то НАМНОГО проще: создать детектор языка вместопереводчик.Я недавно построил один и обнаружил, что самое полезное, что вы можете сделать, - это построить n-граммы символов (биграммы и триграммы вместе работают лучше всего).Затем вы использовали бы n-граммы в качестве входных данных для стандартного алгоритма машинного обучения (например, C45, GP, GA, байесовской модели и т. Д.) И выполняли 10-кратную перекрестную проверку для минимизации переобучения.


Обновление:

"... какие программные компоненты вы используете для запуска своего примера?"

Мой пример был довольно прост: у меня есть база данных SQL Server с документами, которые уже помечены языком, я загружаю все данные в память (несколько сотен документов) и даю алгоритм (C45) каждый документ.Алгоритм использует пользовательскую функцию для извлечения особенностей документа (буквы биграммы и триграммы), затем запускает стандартный процесс обучения и выплевывает модель.Затем я проверяю модель по набору данных для проверки точности.

В вашем случае с терабайтами данных кажется, что вы должны использовать mahout с hadoop.Кроме того, компоненты, которые вы собираетесь использовать, хорошо определены в архитектуре mahout / hadoop, поэтому с этого момента это должно быть довольно понятным.

2 голосов
/ 26 апреля 2011

Какие существующие базы данных? Какие технологии баз данных для хранения результатов, когда это терабайты данных HBase, ElasticSearch, MongoDB

• Какие языки программирования помимо C ++? Для ML другие популярные языки Scala, Java, Python

• Apache mahunt? Иногда полезно, больше кодирования для чистого Hadoop

• И как эти программные компоненты будут работать вместе, чтобы обеспечить работу в целом? Есть много статистических алгоритмов машинного обучения, которые можно парализовать с помощью mapreduce, позволяя sotrage в NoSQl

1 голос
/ 25 апреля 2011

Лучшие методы, доступные для автоматического перевода, основаны на статистических методах.В информатике это известно как «машинный перевод» или MT.Идея состоит в том, чтобы трактовать сигнал (текст, который нужно перевести) как зашумленный сигнал и использовать исправление ошибок для «исправления» сигнала.Например, предположим, что вы переводите с английского на французский.Предположим, что английское утверждение изначально было французским, но вышло как английский.Вы должны исправить это, чтобы восстановить это.Статистическая языковая модель может быть построена для целевого языка (французский) и для ошибок.Ошибки могут включать пропущенные слова, перемещенные слова, слова с ошибками и добавленные слова.

Более подробную информацию можно найти по адресу: http://www.statmt.org/

Что касается БД, то решение МТ не требует типичного БД.Все должно быть сделано в памяти.

Лучший язык для этой конкретной задачи - самый быстрый.C был бы идеален для этой проблемы, потому что это быстро и легко контролировать доступ к памяти.Но можно использовать любой язык высокого уровня, такой как Perl, C #, Java, Python и т. Д.

0 голосов
/ 28 апреля 2018

Google Tensorflow - полезный инструмент для базового перевода. Однако любой, кто действительно говорит на двух языках, знает, что перевод не является статистическим процессом. Это гораздо более сложный процесс, который только что был упрощен, поэтому 90% из них кажутся правильными.
Огромный параллелизм будет иметь большое значение, поэтому появление квантовых вычислений и, возможно, некоторые из идей, которые его формируют, сделают возможным следующие 8%.
Последние 2% будут соответствовать нормальным профессиональным переводчикам.

...