Que algoritmo (s) pode ser usado para obter uma previsão razoavelmente boa da próxima palavra?

10

Qual é uma boa maneira de implementar a "previsão da próxima palavra"? Por exemplo, o usuário digita "eu sou" e o sistema sugere "a" e "não" (ou possivelmente outros) como a próxima palavra. Estou ciente de um método que usa cadeias de Markov e algum texto de treinamento (obviamente) para conseguir mais ou menos isso. Mas li em algum lugar que esse método é muito restritivo e se aplica a casos muito simples.

Entendo o básico de redes neurais e algoritmos genéticos (embora nunca os tenha usado em um projeto sério) e talvez eles possam ser de alguma ajuda. Gostaria de saber se há algum algoritmo que, dado o texto de treinamento apropriado (por exemplo, artigos de jornal e a própria digitação do usuário) possa apresentar sugestões razoavelmente apropriadas para a próxima palavra. Caso contrário (links para) algoritmos, métodos gerais de alto nível para atacar esse problema são bem-vindos.

yati sagade
fonte

Respostas:

9

Dê uma olhada em n-gramas . Um grama é uma sequência de npalavras. No seu caso, você quer nser 3, pois precisa de dois query wordse um resulting word. Um grama de três seria, por exemplo, "Estou cansado", outro "Estou feliz".

O que você precisa é de uma coleção desses 3 gramas coletados em seu idioma de destino, digamos inglês. Como você não pode colecioná-lo sobre tudo o que já foi escrito em inglês, é necessário fazer uma seleção. Essa seleção de textos representativos é chamada a corpus. Se o seu corpus for bom, ele informará com que frequência uma sequência de três palavras específicas ocorre juntas em inglês. A partir disso, você pode calcular a probabilidade de 3 gramas.

Coletar esse tipo de dados é a parte mais difícil. Depois de ter a lista de todos os 3 gramas, juntamente com a probabilidade deles, você pode filtrar a lista para todos os 3 gramas, começando com "eu sou". Então você classifica toda essa lista por probabilidade e voilà: sua previsão.

sebastiangeiger
fonte
Tudo bem, e existe um valor ideal ndisso que produz bons resultados? Nem sempre tem que ser a terceira palavra que está previsto, você vê
yati sagade
2
Bem, uma maior ngera uma lista mais longa, que fornecerá uma previsão mais precisa, mas também será mais cara de pesquisar. Portanto, é uma troca entre precisão e tempo de computação.
Sebastiangeiger
2
Além disso, você precisa de um corpus maior para que n-gramas maiores sejam praticamente úteis.
Liori 26/06/2013
4
hum este é literalmente uma cadeia de Markov ... não só isso, mas, literalmente, o exemplo mais livro ...
Justin L.
2

Parece que o domínio do problema é um subconjunto da pesquisa de cadeias. Ao estender as palavras para incluir espaços em branco, a correspondência de seqüência difusa pode ser aplicada aqui.

Você pode considerar / permitir toda a entrada do usuário como uma palavra durante o treinamento, além do seu dicionário. Isso permite sugerir a próxima palavra, mas também sugere a conclusão automática de palavras ou frases.

Aqui está um link para uma compilação de algoritmos de pesquisa de string difusa

http://ntz-develop.blogspot.com/2011/03/fuzzy-string-search.html

Dorward Villaruz
fonte
1

Você está procurando um modelo de idioma (estatístico) .

Um modelo de linguagem estatística atribui uma probabilidade a uma sequência de m palavras P(w_1,...,w_m)por meio de uma distribuição de probabilidade ...

No reconhecimento de fala e na compactação de dados, esse modelo tenta capturar as propriedades de um idioma e prever a próxima palavra em uma sequência de fala ...

user3287
fonte
Uau. Mas acho que a resposta de @bastiangeiger explica isso para n = 3.
yati sagade
Sua resposta descreve um modelo de linguagem específico, ou seja, modelos n-grama. Existem outros modelos de linguagem, por exemplo, modelos de linguagem sintática ( goo.gl/ffPOg ).
usar o seguinte comando