Interface Node.js para a ferramenta Google Word2vec
Esta é uma interface node.js para a ferramenta Word2Vec desenvolvida no Google Research para "implementação eficiente das contínuas palavras e arquiteturas de pular grama para calcular representações vetoriais de palavras", que podem ser usadas em uma variedade de tarefas de PNL. Para obter mais informações sobre o projeto Word2vec , consulte https://code.google.com/p/word2vec/.
Atualmente, node-word2vec é suportado apenas para sistemas operacionais UNIX.
Instale -o via npm:
npm install word2vecPara usá -lo dentro do Node.js, requer o módulo da seguinte maneira:
var w2v = require ( 'word2vec' ) ;Para aplicações em que é importante que certos pares de palavras sejam tratados como um único termo (por exemplo, "Barack Obama" ou "Nova York" deve ser tratado como uma palavra), os corpora de texto usados para treinamento devem ser pré-processados através da função Word2frases . Palavras que ocorrem frequentemente próximas uma da outra serão concatenadas por meio de um sublinhado, por exemplo, as palavras "novo" e "York" se seguirem um ao lado do outro podem ser transformadas em uma única palavra "new_york".
Internamente, essa função chama o aplicativo C Linha de comando C do projeto Google Word2vec . Isso permite que ele use multithreading e preserva a eficiência do código C original. Ele processa os textos fornecidos pelo documento de texto input , escrevendo a saída em um arquivo com o nome fornecido pela output .
O parâmetro params espera que um objeto JS contendo opcionalmente algumas das seguintes teclas e valores associados. Se eles não forem fornecidos, os valores padrão serão usados.
| Chave | Descrição | Valor padrão |
|---|---|---|
| Mincound | descarte as palavras que aparecem menos do que o Mincount Times | 5 |
| limite | determina o número de frases, valor mais alto significa menos frases | 100 |
| depurar | Define o modo de depuração | 2 |
| silencioso | Define se alguma saída deve ser impressa no console | falso |
Após a execução bem -sucedida, a função callback fornecida é invocada. Ele recebe o número do código de saída como seu primeiro parâmetro.
Esta função chama o aplicativo de linha de comando word2vec do Google e encontra representações vetoriais para as palavras no corpus de treinamento input , escrevendo os resultados no arquivo output . A saída pode ser carregada no nó através da função loadModel , que expõe vários métodos para interagir com as representações vetoriais aprendidas das palavras.
O parâmetro params espera que um objeto JS contendo opcionalmente algumas das seguintes teclas e valores associados. Para aqueles que faltavam, os valores padrão são usados:
| Chave | Descrição | Valor padrão |
|---|---|---|
| tamanho | Define o tamanho dos vetores de palavras | 100 |
| janela | Define o comprimento máximo de pular entre as palavras | 5 |
| amostra | Define o limiar para a ocorrência de palavras. Aqueles que aparecem com maior frequência nos dados de treinamento serão aleatoriamente amostrados; O alcance útil é (0, 1E-5) | 1e-3 |
| hs | 1 = Use softmax hierárquico | 0 |
| negativo | número de exemplos negativos; Os valores comuns são 3 - 10 (0 = não usados) | 5 |
| tópicos | Número de threads usados | 12 |
| iter | Número de iterações de treinamento | 5 |
| Mincound | Isso descartará as palavras que aparecem menos do que o Mincount Times | 5 |
| alfa | Define a taxa de aprendizado inicial | 0,025 para pular grama e 0,05 para CBOW |
| classes | Classes de palavras de saída em vez de vetores de palavras | 0 (os vetores estão escritos) |
| depurar | Define o modo de depuração | 2 |
| binário | salvar os vetores resultantes no modo binário | 0 (desligado) |
| savevocab | O vocabulário será salvo para salvar o valor devocab | |
| Readvocab | O vocabulário será lido no valor readvocab , não construído a partir dos dados de treinamento | |
| CBOW | Use o modelo contínuo de saco de palavras | 1 (use 0 para o modelo de pular grama) |
| silencioso | Define se alguma saída deve ser impressa no console | falso |
Após a execução bem -sucedida, a função callback fornecida é invocada. Ele recebe o número do código de saída como seu primeiro parâmetro.
Esta é a principal função do pacote, que carrega um arquivo de modelo salvo contendo representações vetoriais de palavras na memória. Esse arquivo pode ser criado usando a função Word2Vec . Depois que o arquivo é carregado com sucesso, a função de retorno de chamada fornecida é disparada, que a seguir as convenções possui dois parâmetros: err e model . Se tudo funcionar sem problemas e nenhum erro ocorreu, o primeiro argumento deve ser null . O parâmetro model é um objeto de modelo que mantém todos os dados e expondo as propriedades e métodos explicados na seção Modelo Object .
Exemplo:
w2v . loadModel ( './vectors.txt' , function ( error , model ) {
console . log ( model ) ;
} ) ;Saída de amostra:
{
getVectors : [ Function ] ,
distance : [ Function : distance ] ,
analogy : [ Function : analogy ] ,
words : '98331' ,
size : '200'
} Número de palavras únicas no corpus de treinamento.
Comprimento dos vetores de palavras instruídos.
Calcula a palavra similaridade entre word1 e word2 .
Exemplo:
model . similarity ( 'ham' , 'cheese' ) ;Saída de amostra:
0.4907762118841032 Calcula a distância cosseno entre a frase fornecida (uma string que é convertida internamente em uma variedade de palavras, que resultam em um vetor de frase ) e os outros vetores de palavras do vocabulário. Retornados são as palavras number com a maior semelhança com a frase fornecida. Se number não for fornecido, por padrão, as 40 palavras de pontuação mais altas serão retornadas. Se nenhuma das palavras na frase aparecer no dicionário, a função retorna null . Em todos os outros casos, palavras desconhecidas serão descartadas no cálculo da distância cosseno.
Exemplo:
model . mostSimilar ( 'switzerland' , 20 ) ;Saída de amostra:
[
{ word : 'chur' , dist : 0.6070252929307018 } ,
{ word : 'ticino' , dist : 0.6049085549621765 } ,
{ word : 'bern' , dist : 0.6001648890419077 } ,
{ word : 'cantons' , dist : 0.5822226582323267 } ,
{ word : 'z_rich' , dist : 0.5671853621346818 } ,
{ word : 'iceland_norway' , dist : 0.5651901750812693 } ,
{ word : 'aargau' , dist : 0.5590524831511438 } ,
{ word : 'aarau' , dist : 0.555220055372284 } ,
{ word : 'zurich' , dist : 0.5401119092258485 } ,
{ word : 'berne' , dist : 0.5391358099043649 } ,
{ word : 'zug' , dist : 0.5375590160292268 } ,
{ word : 'swiss_confederation' , dist : 0.5365824598661265 } ,
{ word : 'germany' , dist : 0.5337325187293028 } ,
{ word : 'italy' , dist : 0.5309218588704736 } ,
{ word : 'alsace_lorraine' , dist : 0.5270204106304165 } ,
{ word : 'belgium_denmark' , dist : 0.5247942780963807 } ,
{ word : 'sweden_finland' , dist : 0.5241634037188426 } ,
{ word : 'canton' , dist : 0.5212495170066538 } ,
{ word : 'anterselva' , dist : 0.5186651140386938 } ,
{ word : 'belgium' , dist : 0.5150383129735169 }
] Para um par de palavras em um relacionamento como man e king , essa função tenta encontrar o termo que está em uma relação análoga com a word fornecida. Se number não for fornecido, por padrão, os 40 resultados com maior pontuação serão retornados.
Exemplo:
model . analogy ( 'woman' , [ 'man' , 'king' ] , 10 ) ;Saída de amostra:
[
{ word : 'queen' , dist : 0.5607083309028658 } ,
{ word : 'queen_consort' , dist : 0.510974781496456 } ,
{ word : 'crowned_king' , dist : 0.5060923120115347 } ,
{ word : 'isabella' , dist : 0.49319425034513376 } ,
{ word : 'matilda' , dist : 0.4931204901924969 } ,
{ word : 'dagmar' , dist : 0.4910608716969606 } ,
{ word : 'sibylla' , dist : 0.4832698899279795 } ,
{ word : 'died_childless' , dist : 0.47957251302898396 } ,
{ word : 'charles_viii' , dist : 0.4775804990655765 } ,
{ word : 'melisende' , dist : 0.47663194967001704 }
] Retorna as representações vetoriais aprendidas para a word de entrada. Se word não existir no vocabulário, a função retorna null .
Exemplo:
model . getVector ( 'king' ) ;Saída de amostra:
{
word : 'king' ,
values : [
0.006371254151248689 ,
- 0.04533821363410406 ,
0.1589142808632736 ,
...
0.042080221123209825 ,
- 0.038347102017109225
]
} Retorna as representações vetoriais aprendidas para as palavras fornecidas. Se as palavras são indefinidas, ou seja, a função é evocada sem transmitir nenhum argumento, ela retorna os vetores para todas as palavras aprendidas. O valor retornado é uma array de objetos que são instâncias da classe WordVec .
Exemplo:
model . getVectors ( [ 'king' , 'queen' , 'boy' , 'girl' ] ) ;Saída de amostra:
[
{
word : 'king' ,
values : [
0.006371254151248689 ,
- 0.04533821363410406 ,
0.1589142808632736 ,
...
0.042080221123209825 ,
- 0.038347102017109225
]
} ,
{
word : 'queen' ,
values : [
0.014399041122817985 ,
- 0.000026896638109750347 ,
0.20398248693190596 ,
...
- 0.05329081648586445 ,
- 0.012556868376422963
]
} ,
{
word : 'girl' ,
values : [
- 0.1247347144692245 ,
0.03834108759049417 ,
- 0.022911846734360187 ,
...
- 0.0798994867922872 ,
- 0.11387393949666696
]
} ,
{
word : 'boy' ,
values : [
- 0.05436531234037158 ,
0.008874993957578164 ,
- 0.06711992414442335 ,
...
0.05673998568026764 ,
- 0.04885347925837509
]
}
] Retorna a palavra que tem a representação vetorial mais próxima da entrada vec . A função espera um vetor de palavras, uma instância do construtor WordVector ou uma matriz de valores numéricos do size do comprimento. Ele retorna a palavra no vocabulário para o qual a distância entre seu vetor e o vetor de entrada fornecida é mais baixa.
Exemplo:
model . getNearestWord ( model . getVector ( 'empire' ) ) ;Saída de amostra:
{ word : 'empire' , dist : 1.0000000000000002 } Retorna as palavras cujas representações vetoriais estão mais próximas da entrada vec . O primeiro parâmetro da função espera um vetor de palavras, uma instância do construtor WordVector ou uma matriz de valores numéricos do size do comprimento. O segundo parâmetro, number , é opcional e especifica o número de palavras retornadas. Se não for fornecido, um valor padrão de 10 é usado.
Exemplo:
model . getNearestWords ( model . getVector ( 'man' ) , 3 )Saída de amostra:
[
{ word : 'man' , dist : 1.0000000000000002 } ,
{ word : 'woman' , dist : 0.5731114915085445 } ,
{ word : 'boy' , dist : 0.49110060323870924 }
] A palavra no vocabulário.
A representação vetorial aprendida para a palavra, uma variedade de size de comprimento.
Adiciona o vetor do wordVector de entrada ao vetor .values .
Subtraia o vetor do wordVector de entrada ao vetor .values .
Execute testes através do npm test
Clonar o repositório Git com o comando
$ git clone https://github.com/Planeshifter/node-word2vec.gitMude para o diretório do projeto e compilar os arquivos de origem C via
$ cd node-word2vec
$ make --directory=srcApache v2.