Идентификация языка
Идентификация языка (англ. language identification), в методике обработки естественного языка — определение языка. Проблема идентификации языка является особым случаем категоризации текста и решается с использованием статистических методов.
Обзор
Для идентификации языка реализуется архитектура PPRLM (parallel phonemes recognition + language model) с параллельным подключением фонетических распознавателей, обученных на нескольких языках. Фонетическое распознавание производится на основе скрытых марковских моделей (СММ) с помощью алгоритма Витерби.
Для принятия решения о принадлежности речевого сообщения к тому или иному целевому языку реализуется подход с классификатором на основе метода опорных векторов (SVM — support vector machines).
Принцип работы системы, построенной на основе классического PPRLM заключается в следующем:
- в системе присутствуют несколько фонетических распознавателей;
- каждый входной звуковой файл распознаётся фонетическими распознавателями;
- по результирующей последовательности фонем каждого фонетического распознавателя считаются меры близости к модели n-gramm того или иного целевого языка;
- победившим считается язык с максимальной мерой близости модели n-gramm.
В усовершенствованных системах PPRLM идентификация языка реализуется в виде открытой задачи: производится проверка «принадлежит» / «не принадлежит» обработанный файл целевому языку, решение принимается автоматически с учётом порога установленного пользователем.
К базовому алгоритму добавляются следующие шаги:
- на результирующую последовательность фонем каждого фонетического распознавателя накладывается модель n-gramm того или иного «опорного» языка и считаются меры близости модели n-gramm к последовательности фонем;
- полный набор мер близости моделей n-gramm к последовательностям фонем является входным вектором для классификатора SVM;
- по результату классификации SVM-классификатором принимается решение о принадлежности к целевому языку с помощью сравнения с установленным порогом для каждого целевого языка в отдельности.
Звуковой файл произнесён на целевом языке, если оценка, данная SVM-классификатором, больше порога. При этом звуковой файл может быть отнесён к одному или нескольким языкам одновременно или не отнесён ни к одному из них.
Литература
- Joshua Goodman. Extended Comment on Language Trees and Zipping. arXiv: cond-mat/0202383 [cond-mat.stat-mech]
- Benedetto, D., E. Caglioti and V. Loreto. Language trees and zipping. Physical Review Letters, 88:4 (2002), Complexity theory.
- Cavnar, William B. and John M. Trenkle. «N-Gram-Based Text Categorization». Proceedings of SDAIR-94, 3rd Annual Symposium on Document Analysis and Information Retrieval (1994) .
- Cilibrasi, Rudi and Paul M.B. Vitanyi. «Clustering by compression». IEEE Transactions on Information Theory 51(4), April 2005, 1523—1545.
- Dunning, T. (1994) «Statistical Identification of Language». Technical Report MCCS 94-273, New Mexico State University, 1994.
- Goodman, Joshua. (2002) Extended comment on «Language Trees and Zipping». Microsoft Research, Feb 21 2002. (This is a criticism of the data compression in favor of the Naive Bayes method.)
- Grefenstette, Gregory. (1995) Comparing two language identification schemes. Proceedings of the 3rd International Conference on the Statistical Analysis of Textual Data (JADT 1995).
- Poutsma, Arjen. (2001) Applying Monte Carlo techniques to language identification. SmartHaven, Amsterdam. Presented at CLIN 2001.
- The Economist. (2002) «The elements of style: Analysing compressed data leads to impressive results in linguistics»
- Radim Řehůřek and Milan Kolkus. (2009) «Language Identification on the Web: Extending the Dictionary Method (недоступная ссылка)» Computational Linguistics and Intelligent Text Processing
Ссылки
Библиотеки
- LID — Language Identification in Python: algorithm and code example of an n-gram based LID tool in Python and Scheme by Damir Cavar.
- lid Language Identifier: by Lingua-Systems; C/C++ library and Perl Extension (online demo).
- lc4j, a language categorization Java library, by Marco Olivo.
- Microsoft Extended Linguistic Services for Windows 7: including Microsoft Language Detection.
- Windows 7 API Code Pack for .NET: including managed interfaces for the above.
- NTextCat — free Language Identification API for .NET (C#): 280+ languages available out of the box. Recognizes language and encoding (UTF-8, Windows-1252, Big5, etc.) of text. Mono compatible.
- jsli — pure JavaScript Language Identification library.
- cldr-R library for Chromium-Author’s Compact Language Detection code.
- language-detection: open-source language detection library for Java (forks: lang-guess and language-detector).
- cld2: open-source language detection library for C++ by Google
- GuessLanguage: open-source language detection library for javascript
- GuessLanguage: open-source language detection library for python
- Text LanguageDetect: pear language detect (not maintained currently)
- datagram: open-source MIT JavaScript classification library. Automatically classify and recognize languages of input data. It can be used for any type of classification based on trained data.
Web-сервисы
- Language Identification Web Service: language detection API (JSON and XML) that detects 100+ languages in texts, websites and documents
- Language Detection API: simple language identification API
- dataTXT-LI: language identification RESTful API, part of dandelion dataTXT semantic API family (named entity extraction, text similarity etc.)
- AlchemyAPI: language identification API, available as SDK and through a RESTfull API (web-based demonstration).
- PetaMem Language Identification: provides a choice between ngram, nvect and smart methods.
- Open Xerox LanguageIdentifier, available in web-based form or through API.
- GlobalNLP: web-based language identification
- Language Detector, Online identification from text or URL and API available for developers.
- What Language Is This? Online language identifier: web-based tool written by Henrik Falck.
- Rosette Language Identifier: product by Basis Technology.
- Language Identifier: product by Sematext; exposes Java API and is available through REST/Webservice.
- G2LI (Global Information Infrastructure Laboratory’s Language Identifier).
- Rosoka Cloud by IMT Holdings provides language ID, entity and relationship extraction RESTfull web services available through Amazon Web Services Marketplace.
- Semantria sentiment and text analytics API which features language detection
- Loque.la Language Detection API: Website language identification with API, (json/XML)
- «Стэл КС» Идентификация языка: API идентификации языка (11 языков)