Интерфейс node.js для инструмента Google Word2VEC
Это интерфейс node.js для инструмента Word2VEC , разработанного в Google Research для «Эффективной реализации непрерывной пакетин слов и архитектур с пропусков-граммом для вычислительных векторных представлений слов», которые могут использоваться в различных задачах NLP. Для получения дополнительной информации о проекте Word2VEC обратитесь к https://code.google.com/p/word2vec/.
В настоящее время node-word2vec поддерживается только для операционных систем UNIX.
Установите его через NPM:
npm install word2vecЧтобы использовать его внутри node.js, требуют модуля следующим образом:
var w2v = require ( 'word2vec' ) ;Для применений, где важно, чтобы определенные пары слов рассматривались как один термин (например, «Барак Обама» или «Нью-Йорк» рассматриваться как одно слово), текстовые корпорации, используемые для обучения, должны быть предварительно обработаны с помощью функции Word2phrase . Слова, которые часто встречаются рядом друг с другом, будут объединены через подчеркивание, например, слова «новый» и «Йорк», если следуют друг за другом, могут быть преобразованы в одно слово «new_york».
Внутренне эта функция вызывает приложение командной строки C проекта Google Word2VEC . Это позволяет использовать многопоточное и сохраняет эффективность исходного C-кода. Он обрабатывает тексты, приведенные input текстовым документом, записывая вывод в файл с именем, данным output .
Параметр params ожидает, что объект JS необязательно содержат некоторые из следующих ключей и связанных значений. Если они не поставляются, значения по умолчанию используются.
| Ключ | Описание | Значение по умолчанию |
|---|---|---|
| MinCount | Отбросьте слова, появляющиеся меньше, чем Times MinCount | 5 |
| порог | Определяет количество фраз, более высокое значение означает меньше фраз | 100 |
| отлаживать | Устанавливает режим отладки | 2 |
| тихий | Устанавливает, следует ли напечатать какой -либо вывод на консоли | ЛОЖЬ |
После успешного выполнения вызывает функцию callback . Он получает номер кода выхода в качестве первого параметра.
Эта функция вызывает приложение командной строки Word2VEC от Google и находит векторные представления для слов в учебном корпусе input , записывая результаты в output файл. Затем выход можно загрузить в узел с помощью функции loadModel , которая раскрывает несколько методов взаимодействия с изученными векторными представлениями слов.
Параметр params ожидает, что объект JS необязательно содержат некоторые из следующих ключей и связанных значений. Для тех, кто отсутствует, значения по умолчанию используются:
| Ключ | Описание | Значение по умолчанию |
|---|---|---|
| размер | Устанавливает размер векторов слов | 100 |
| окно | устанавливает максимальную длину пропуска между словами | 5 |
| образец | Устанавливает порог для возникновения слов. Те, которые появляются с более высокой частотой в учебных данных, будут случайным образом понижены; Полезный диапазон (0, 1E-5) | 1E-3 |
| HS | 1 = Использовать иерархический Softmax | 0 |
| отрицательный | количество отрицательных примеров; Общие значения - 3 - 10 (0 = не используется) | 5 |
| нить | Количество использованных потоков | 12 |
| итер | Количество итераций обучения | 5 |
| MinCount | Это отбросит слова, которые появляются меньше, чем Times MinCount Times | 5 |
| альфа | Устанавливает начальный уровень обучения | 0,025 для Skip-Gram и 0,05 для CBOW |
| классы | Вывод классы слов, а не векторы слов | 0 (написаны векторы) |
| отлаживать | Устанавливает режим отладки | 2 |
| бинарный | Сохранить полученные векторы в бинарном режиме | 0 (выключен) |
| SaveVocab | Словарь будет сохранен до значения SaveVocab | |
| ReadVocab | Словарь будет прочитан из значения READVOCAB , не построенный из учебных данных | |
| Cbow | Используйте модель непрерывного пакета слов | 1 (используйте 0 для модели Skip-Gram) |
| тихий | Устанавливает, следует ли напечатать какой -либо вывод на консоли | ЛОЖЬ |
После успешного выполнения вызывает функцию callback . Он получает номер кода выхода в качестве первого параметра.
Это основная функция пакета, которая загружает сохраненный файл модели, содержащий векторные представления слов в память. Такой файл может быть создан с помощью функции Word2VEC . После того, как файл успешно загружен, выпущенная функция обратного вызова, что следующие соглашения имеют два параметра: err и model . Если все работает гладко, и ошибка не произошла, первый аргумент должен быть null . Параметр model - это объект модели, удерживающий все данные и разоблачает свойства и методы, объясненные в разделе объекта модели .
Пример:
w2v . loadModel ( './vectors.txt' , function ( error , model ) {
console . log ( model ) ;
} ) ;Вывод вывода:
{
getVectors : [ Function ] ,
distance : [ Function : distance ] ,
analogy : [ Function : analogy ] ,
words : '98331' ,
size : '200'
} Количество уникальных слов в учебном корпусе.
Длина ученых векторов слова.
Вычисляет сходство слова между word1 и word2 .
Пример:
model . similarity ( 'ham' , 'cheese' ) ;Вывод вывода:
0.4907762118841032 Вычисляет расстояние косинуса между поставляемой фразой ( string , которая внутренне преобразуется в массив слов, которые приводят к вектору фразы ) и другими векторами слов. number слова с наибольшим сходством с поставленной фразой. Если number не поставляется, по умолчанию возвращаются 40 самых высоких слов. Если ни одно из слов в фразе не появляется в словаре, функция возвращает null . Во всех других случаях неизвестные слова будут отброшены при вычислении расстояния косинуса.
Пример:
model . mostSimilar ( 'switzerland' , 20 ) ;Вывод вывода:
[
{ 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 }
] Для пары слов в таких отношениях, как man и king , эта функция пытается найти термин, который находится в аналогичном отношениях с поставленным word . Если number не поставляется, по умолчанию возвращаются 40 результатов с самым высоким показателем.
Пример:
model . analogy ( 'woman' , [ 'man' , 'king' ] , 10 ) ;Вывод вывода:
[
{ 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 }
] Возвращает изученные векторные представления для входного word . Если word не существует в словаре, функция возвращает null .
Пример:
model . getVector ( 'king' ) ;Вывод вывода:
{
word : 'king' ,
values : [
0.006371254151248689 ,
- 0.04533821363410406 ,
0.1589142808632736 ,
...
0.042080221123209825 ,
- 0.038347102017109225
]
} Возвращает изученные векторные представления для предоставленных слов. Если слова не определены, то есть функция вызывает без передачи их аргументов, она возвращает векторы для всех изученных слов. Возвращенное значение - это array объектов, которые являются экземплярами класса WordVec .
Пример:
model . getVectors ( [ 'king' , 'queen' , 'boy' , 'girl' ] ) ;Вывод вывода:
[
{
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
]
}
] Возвращает слово, которое имеет ближайшее векторное представление на входной vec . Функция ожидает вектор слов, либо экземпляр конструктора WordVector , либо массив значений чисел size длины. Он возвращает слово в словаре, для которого расстояние между его вектором и поставляемым входным вектором является самым низким.
Пример:
model . getNearestWord ( model . getVector ( 'empire' ) ) ;Вывод вывода:
{ word : 'empire' , dist : 1.0000000000000002 } Возвращает слова, векторные представления, наиболее близкие к вводу vec . Первый параметр функции ожидает вектора слов, либо экземпляра конструктора WordVector , либо массив значений чисел size длины. Второй параметр, number , является необязательным и указывает количество возвращаемых слов. Если не поставляется, используется значение по умолчанию 10 .
Пример:
model . getNearestWords ( model . getVector ( 'man' ) , 3 )Вывод вывода:
[
{ word : 'man' , dist : 1.0000000000000002 } ,
{ word : 'woman' , dist : 0.5731114915085445 } ,
{ word : 'boy' , dist : 0.49110060323870924 }
] Слово в словаре.
Ученый векторный представление для слова, массив size длины.
Добавляет вектор входного wordVector в вектор .values
Вычитает вектор входного wordVector векторного вектора .values
Запустите тесты с помощью npm test команды
Клонировать репозиторий GIT с помощью команды
$ git clone https://github.com/Planeshifter/node-word2vec.gitИзменить в каталог проекта и составить исходные файлы C через
$ cd node-word2vec
$ make --directory=srcApache V2.