Как определить предложение Engli sh с другими языками, такими как Spani sh, используя ColdFusion? - PullRequest
0 голосов
/ 26 февраля 2020

Здесь у меня есть сценарий, у меня есть предложение с английскими sh и тайскими словами, такими как 'Hello World สวัสดีชาวโลก'. Теперь я хочу получить слово Engli sh с помощью регулярных выражений типа /[a-zA-Z ]*/. Но когда у меня есть английские sh слова с испанским sh вроде 'Hello World Hola Mundo'. Как я могу определить предложение с другими языками, такими как испанский sh?

Есть ли у нас какой-либо вариант использования регулярных выражений / ColdFusion? Просьба поделиться любым предложением и идеей относительно этого.

Спасибо!

Ответы [ 3 ]

2 голосов
/ 26 февраля 2020

Лучше всего использовать для этого внешний API. Google имеет конечную точку определения языка в своем API перевода.

https://cloud.google.com/translate/docs/basic/detecting-language

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

2 голосов
/ 26 февраля 2020

Мне не очень повезло с решением только для ColdFusion, потому что многие языки (например, Spani sh) используют латинские символы. Я использовал логи c из этого Java сценария с диапазонами символов для обнаружения арабского c, бенгальского, бирманского / мьянманского, кириллицы c, девангари, эфиопского c / амхари c, грузинский, греческий, гуджарати, гурмухи, хангыль, иврит, каннада, кхмерский, малаялам, монгольский, ория, сингальский, тамильский, телугу, тайский и тибетский.

@ Виктор упомянул Полиглот библиотека , и она утверждает, что обнаружила 165 языков, используя несколько методов, но она написана на Python. Проект OpenNLP Apache поддерживает определение языка, и вот несколько примеров java для выполнения обнаружения. Lingua - это выделенная Java библиотека для определения языка, которая утверждает, что работает быстро при работе с короткими текстовыми фразами. (Также, вот список других NLP Java библиотек .)

В случае смайликов они очень разные и могут вызвать проблемы с анализатором; особенно при передаче данных сторонним процессам. Для обнаружения и дезинфекции смайликов я рекомендую использовать библиотеку emoji- java java. (Я написал ColdFusion CF C в качестве оболочки для библиотеки Java.)

При дальнейшем исследовании я нашел совместимую с ColdFusion библиотеку Java, которая хорошо работает и обнаруживает 68 языков. Это kju2-разветвленный языковой детектор . Я написал CF-язык-детектор CF C.

languageDetector = new languageDetector();
languageDetector("Quel est votre nom?")          // CATALAN (French?)
languageDetector("Wie heißen Sie?")              // GERMAN
languageDetector("¿Cuál es tu nombre?")          // SPANISH
languageDetector("Πως σε λένε?")                 // GREEK
languageDetector("Как Вас зовут?")               // BELARUSIAN (Russian)
languageDetector("คุณชื่ออะไร?")                    // THAI
1 голос
/ 26 февраля 2020

Я не думаю, что регулярное выражение является правильным инструментом для решения этой проблемы. Представьте себе, например, глагол Engli sh to dare , который без до совпадает с итальянским инфинитивом dare , который дать . Как бы вы отличали guish этих двух смелей -ов друг от друга? По контексту? Какой контекст? Это не регулярное задание.

Хорошим примером сложности задачи является только предыдущий абзац. Ваше намерение состоит в том, чтобы иметь инструмент, который может анализировать этот абзац и различать guish три случая смешения в этом комментарии. Но какой язык следует назначить третьему смею ? На самом деле нет языка, потому что это вхождение относится к графическому представлению смеет (последовательность четырех символов d , a , r , e ), не на любом языке.

...