Обработка естественного языка - PullRequest
1 голос
/ 25 сентября 2010

У меня есть тысячи предложений в файле. Я хочу найти только правильные / полезные слова на английском языке. Возможно ли это с помощью обработки естественного языка?

Пример предложения:

~ @ ^. ^ @ ~ Тик, но иногда всемирно известный Tac Zorooooooooooo

Я просто хочу извлечь только английские слова, такие как

мир тиков, хорошо известный

Любой совет, как мне этого добиться. Заранее спасибо

Ответы [ 5 ]

5 голосов
/ 25 сентября 2010

Вы можете использовать WordNet API для поиска слов.

1 голос
/ 26 мая 2017

Вы можете использовать Python для достижения этой цели.То, что вы ищете, это фильтрация английских слов.

  1. Сначала токенизируйте предложения.(Разбить предложения на слова)

  2. Использовать библиотеку Python langdetect, чтобы узнать, английское это слово или нет

  3. Фильтровать все английские слована основе вывода langdetect.

Как установить библиотеку:

$ sudo pip install langdetect
Supported Python versions 2.6, 2.7, 3.x.

>>> from langdetect import detect

>>> detect("War doesn't show who's right, just who's left.")
'en'
>>> detect("Ein, zwei, drei, vier")
'de'

https://pypi.python.org/pypi/langdetect?

PS: Донне ожидайте, что это будет работать правильно всегда:

>>> detect("today is a good day")
'so'
>>> detect("today is a good day.")
'so'
>>> detect("la vita e bella!")
'it'
>>> detect("khoobi? khoshi?")
'so'
>>> detect("wow")
'pl'
>>> detect("what a day")
'en'
>>> detect("yay!")
'so'
1 голос
/ 03 мая 2011

Вы можете использовать языковую догадку, которая использует символьную статистику n-граммы. Обычно требуется только небольшое количество материала (как для обучения, так и для классификации). Ссылки на литературу и реализации можно найти здесь:

http://odur.let.rug.nl/~vannoord/TextCat/

Методология очень проста:

  1. Соберите небольшое количество текста для каждого языка.
  2. Извлеките и сосчитайте 1-грамм и 5-грамм, встречающиеся в тексте.
  3. Упорядочите эти n-граммы по частоте, взяв лучшее, скажем, 300. Это формирует отпечаток языка.

Если вы хотите классифицировать текст или предложение, примените шаги 2 и 3 и сравните полученный отпечаток с отпечатками, собранными во время обучения. Рассчитайте оценку, основываясь на разнице в ранге n-граммов, выигрывает язык с наименьшим количеством баллов.

1 голос
/ 25 сентября 2010

Вам необходимо составить список стоп-слов (если вы не хотите вносить их в свой поиск), после чего вы можете фильтровать свой поиск, используя этот список стоп-слов. для деталей вы должны рассмотреть эти статьи в Википедии

  1. http://en.wikipedia.org/wiki/Stop_words
  2. http://en.wikipedia.org/wiki/Natural_language_processing
0 голосов
/ 11 декабря 2017
package com;

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;

import edu.cmu.sphinx.api.Configuration;
import edu.cmu.sphinx.api.SpeechResult;
import edu.cmu.sphinx.api.StreamSpeechRecognizer;

public class TranscriberDemo {       

    public static void main(String[] args) throws Exception {

        Configuration configuration = new Configuration();

        configuration.setAcousticModelPath("en-us");
        configuration.setDictionaryPath("Sample Dict File_2.dic");
        configuration.setLanguageModelPath("Sample Language Modeller_2.lm");

        //configuration.setAcousticModelPath("resource:/edu/cmu/sphinx/models/en-us/en-us");
        //configuration.setDictionaryPath("resource:/edu/cmu/sphinx/models/en-us/cmudict-en-us.dict");
        //configuration.setLanguageModelPath("resource:/edu/cmu/sphinx/models/language/en-us.lm.dmp");

    StreamSpeechRecognizer recognizer = new StreamSpeechRecognizer(configuration);
    InputStream stream = new FileInputStream(new File("test.wav"));

        recognizer.startRecognition(stream);
    SpeechResult result;
        while ((result = recognizer.getResult()) != null) {
        System.out.format("Hypothesis: %s\n", result.getHypothesis());
    }
    recognizer.stopRecognition();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...