Ferramenta para a criação de regras próprias para o word recurso lemmatization e tarefas semelhantes

StackOverflow https://stackoverflow.com//questions/9643386

Pergunta

Eu estou fazendo um monte de processamento de linguagem natural com um pouco unsusual requisitos.Muitas vezes eu recebo tarefas semelhante ao recurso lemmatization - dada uma palavra (ou apenas parte do texto) eu preciso encontrar alguns padrões e transformar a palavra de alguma forma.Por exemplo, talvez seja necessário para corrigir os erros de ortografia, por exemplo,palavra dada "eatin" eu preciso transformá-lo para "comer".Ou talvez eu precise transformar palavras "ahahaha", "ahahahaha", etc.apenas "ahaha" e assim por diante.

Então, eu estou procurando para alguns ferramenta genérica que permite definir transormation regras para esses casos.As regras podem parecer algo como isto:

 {w}in   ->  {w}ing
 aha(ha)+  ->  ahaha

O que é preciso para ser capaz de usar capturado padrões do lado esquerdo, do lado direito.

Eu trabalho com linguistas que não sei de programação, pelo que os idealmente esta ferramenta deve usar arquivos externos e linguagem simples para as regras de.

Eu estou fazendo este projeto em Clojure, de modo idealmente esta ferramenta deve ser uma biblioteca para uma das linguagens JVM (Java, Scala, Clojure), mas outras linguagens ou ferramentas de linha de comando estão ok também.

Existem vários muito legal PNL projetos, incluindo PORTÃO, Stanford CoreNLP, NLTK e os outros, e eu não sou especialista em todos eles, assim eu poderia perder a ferramenta que eu preciso lá.Se assim for, por favor me avise.

Note que eu estou trabalhando com várias línguas e realizar tarefas muito diferentes, de modo concreto lemmatizers, derivações, erro de ortografia corretores e assim por diante para concreto idiomas não atender minhas necessidades - eu realmente preciso de mais uma ferramenta genérica.

UPD. Parece que eu preciso dar mais alguns detalhes/exemplos do que eu preciso.

Basicamente, eu preciso de uma função para substituir texto por algum tipo de regex (semelhante a do Java String.replaceAll()), mas com possibilidade de use pego texto na seqüência de caracteres de substituição.Por exemplo, no mundo real, o texto muitas vezes as pessoas repita os caracteres para fazer ênfase na palavra específica, por exemplo,someoone pode escrever "Este filme é soooo boooring...".Eu preciso ser capaz de substituir esses repetitivos "oooo" com apenas um único caractere.Portanto, pode haver uma regra como esta (em sintaxe semelhante a que eu usei anteriormente neste post):

{chars1}<char>+{chars2}?  ->  {chars1}<char>{chars2}

isto é, substituir a palavra de partida com alguns chars (chars1), pelo menos 3 caracteres e, possivelmente, terminando com alguns outros chars (chars2) com a seqüência de caracteres semelhante, mas com apenas uma única .Ponto-chave aqui é que pegar no lado esquerdo de uma regra e use-a no lado direito.

Foi útil?

Solução

Eu encontrei http://userguide.icu-project.org/transforms/general para ser útil, bem como para algumas padrão geral/transformar tarefas como esta, ignorar o material sobre a transliteração, é bom para fazer um monte de coisas.

Você pode apenas carregar regras a partir de um arquivo em uma String e registrá-los, etc.

http://userguide.icu-project.org/transforms/general/rules

Outras dicas

Eu não sou um especialista em PNL, mas eu acredito Bola de neve podem ser de interesse para você.A sua linguagem para representar algoritmos de stemming.Sua stemmer é usado no motor de busca Lucene.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top