All Projects → Koziev → GrammarEngine

Koziev / GrammarEngine

Licence: MIT license
Грамматический Словарь Русского Языка (+ английский, японский, etc)

Programming Languages

C++
36643 projects - #6 most used programming language
C#
18002 projects
c
50402 projects - #5 most used programming language
shell
77523 projects
HTML
75241 projects
Roff
2310 projects

Projects that are alternatives of or similar to GrammarEngine

libmorph
libmorph rus/ukr - fast & accurate morphological analyzer/analyses for Russian and Ukrainian
Stars: ✭ 16 (-76.47%)
Mutual labels:  lemmatizer, morphological-analysis, russian-morphology, lemmatization
simplemma
Simple multilingual lemmatizer for Python, especially useful for speed and efficiency
Stars: ✭ 32 (-52.94%)
Mutual labels:  lemmatizer, morphological-analysis, lemmatization
HebPipe
An NLP pipeline for Hebrew
Stars: ✭ 15 (-77.94%)
Mutual labels:  part-of-speech-tagger, morphological-analysis, lemmatization
udar
UDAR Does Accented Russian: A finite-state morphological analyzer of Russian that handles stressed wordforms.
Stars: ✭ 15 (-77.94%)
Mutual labels:  morphological-analysis, russian-morphology, lemmatization
lemma
A Morphological Parser (Analyser) / Lemmatizer written in Elixir.
Stars: ✭ 45 (-33.82%)
Mutual labels:  lemmatizer, morphological-analyser, lemmatization
NMeCab
Japanese morphological analyzer on .NET
Stars: ✭ 65 (-4.41%)
Mutual labels:  part-of-speech-tagger, morphological-analyser
Sudachipy
Python version of Sudachi, a Japanese tokenizer.
Stars: ✭ 207 (+204.41%)
Mutual labels:  nlp-library, morphological-analysis
Fastnlp
fastNLP: A Modularized and Extensible NLP Framework. Currently still in incubation.
Stars: ✭ 2,441 (+3489.71%)
Mutual labels:  nlp-parsing, nlp-library
Turkish-Lemmatizer
Lemmatization for Turkish Language
Stars: ✭ 72 (+5.88%)
Mutual labels:  lemmatizer, lemmatization
alix
A Lucene Indexer for XML, with lexical analysis (lemmatization for French)
Stars: ✭ 15 (-77.94%)
Mutual labels:  lemmatizer, lemmatization
wink-lemmatizer
English lemmatizer
Stars: ✭ 53 (-22.06%)
Mutual labels:  lemmatizer, lemmatization
Camel tools
A suite of Arabic natural language processing tools developed by the CAMeL Lab at New York University Abu Dhabi.
Stars: ✭ 124 (+82.35%)
Mutual labels:  nlp-library, morphological-analysis
Lingo
package lingo provides the data structures and algorithms required for natural language processing
Stars: ✭ 113 (+66.18%)
Mutual labels:  nlp-library, part-of-speech-tagger
NLP-tools
Useful python NLP tools (evaluation, GUI interface, tokenization)
Stars: ✭ 39 (-42.65%)
Mutual labels:  nlp-parsing, nlp-library
Kuromoji
Kuromoji is a self-contained and very easy to use Japanese morphological analyzer designed for search
Stars: ✭ 745 (+995.59%)
Mutual labels:  nlp-library, part-of-speech-tagger
Kagome
Self-contained Japanese Morphological Analyzer written in pure Go
Stars: ✭ 554 (+714.71%)
Mutual labels:  nlp-library, morphological-analysis
mystem-scala
Morphological analyzer `mystem` (Russian language) wrapper for JVM languages
Stars: ✭ 21 (-69.12%)
Mutual labels:  lemmatizer, russian-morphology
Spark Nlp
State of the Art Natural Language Processing
Stars: ✭ 2,518 (+3602.94%)
Mutual labels:  lemmatizer, part-of-speech-tagger
Qutuf
Qutuf (قُطُوْف): An Arabic Morphological analyzer and Part-Of-Speech tagger as an Expert System.
Stars: ✭ 84 (+23.53%)
Mutual labels:  part-of-speech-tagger, morphological-analysis
Sudachi
A Japanese Tokenizer for Business
Stars: ✭ 496 (+629.41%)
Mutual labels:  nlp-library, morphological-analysis

API Грамматического Словаря Русского Языка

Набор инструментов и API для работы с русской словарной базой и морфологической моделью для решения NLP задач на русскоязычных текстах доступен в виде консольных программ и библиотек для встраивания в код на C/C++, C#, Python, Delphi.

Установка и компиляция зависимостей

Скачиваем, компилируем и устанавливаем liblbfgs:

cd ~
wget https://github.com/downloads/chokkan/liblbfgs/liblbfgs-1.10.tar.gz
tar -xvzf liblbfgs-1.10.tar.gz
cd liblbfgs-1.10
./configure
make
sudo make install

Скачиваем, компилируем и устанавливаем crfsuite:

cd ~
wget https://github.com/downloads/chokkan/crfsuite/crfsuite-0.12.tar.gz
tar -xvzf crfsuite-0.12.tar.gz
cd crfsuite-0.12
./configure
make
sudo make install

Если возникла ошибка fatal error: lbfgs.h: No such file or directory, нужно выполнить

export LD_LIBRARY_PATH=/usr/local/lib

и повторить попытку.

Может потребоваться установить sqlite3 библиотеку (если возникнет ошибка "Unable to locate the sqlite3 library"):

sudo apt-get install sqlite3 libsqlite3-dev

Также может потребоваться установить библиотеки Boost C++:

sudo apt-get install libboost-all-dev

Установка ncurses, которая необходима для консольных утилит:

sudo apt-get install libncurses-dev

Сборка грамматического словаря с помощью CMake

Для сборки необходим компилятор C++, поддерживающий стандарт 11. Я использую VisualStudio 2015 под Windows и gcc 5.4.0 в Ubuntu 16.04. Все части проекта собираются и используются на 64-битных платформах. 32-битный вариант давно не проверялся и может не работать.

Далее инструкция по сборке проекта в Ubuntu.

  1. Создайте папку build в корне исходников, перейдите туда:
mkdir build & cd build
  1. Запустите генерацию makefile'ов:
cmake ..
  1. Запустите компиляцию:
make

Примерно через 20 минут все утилиты и so'шки будут собраны и скопированы в каталоги exe64 и lib64. После этого можно приступать к сборке словаря (см. далее).

Сборка вариантов Парсера вынесена на отдельную страницу.

Утилита Compiler для сборки бинарного словаря

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

Компиляция под Windows с помощью MS VisualStudio 2017

В папке exe64 выложен готовый бинарник compiler.exe, собранный для MS Windows, но Вы можете самостоятельно собрать его с помощью MS VisualStudio 2015. Проект для сборки лежит в папке ...\src\demo\ai\solarix\ygres\compiler\ygres_msvc2005

Так как в проекте стоят ссылки на исходные тексты некоторых библиотек Boost, то надо либо скачать исходники Boost и поправить пути в проекте, либо переделать проект на линковку со скомпилированными библиотеками.

В результате компиляции получится исполнимый файл compiler.exe в папке ...\src\exe64

Компиляция под Ubuntu

Если по каким-то причинам сборка утилиты с помощью CMake вам не подходит, то можно использовать созданный вручную makefile.

Сборочные файлы находятся в папке ...\src\demo\ai\solarix\ygres\compiler.

Перед сборкой создайте временный каталог

mkdir /tmp/ygres

или другой, изменив соответствующую настройку в файле makefile.linux64

Затем запустите сборку:

./build.sh

Через некоторое время в папке exe64 появится исполнимый файл compiler.

Тестовая сборка пустого словаря

Для быстрой проверки работоспособности компилятора запустите сборку пустого словаря с помощью скрипта empty.sh в папке .../src/scripts/dictionary.

В папке .../src/bin-linux64 появятся новые файлы данных diction.bin, lexicon.db и другие.

Сборка пустого словаря под Windows выполняется с помощью скрипта empty.cmd, а результаты будут записаны в bin-windows64.

Сборка русской словарной базы

Исходные тексты с описанием морфологии, лексики и синтаксиса русского языка находятся в папке .../src/dictionary.src.

В папках bin-windows64 и bin-linux64 лежат собранные словарные базы. Самостоятельная сборка потребуется в случае, если вы вносите в исходыне тексты какие-то изменения, например добавляете новые словарные статьи или правила синтаксического разбора.

Для сборки русской словарной базы достаточно запустить скрипт russian.sh или russian.cmd в подкаталоге .../src/scripts/dictionary. Примерно через 30 минут в папке bin-windows64 или bin-linux64 появятся файлы словаря.

Сборка английской словарной базы и других языковых баз

В репозитории находятся также исходные тексты для сборки английской, французской, японской и китайской словарных баз. Для получения бинарного словаря необходимо запустить соответствующий скрипт в папке .../src/scripts/dictionary:

english.cmd или english.sh
french.cmd
japanese.cmd
chinese.cmd

Морфологическая модель японского языка сделана в расчете на использование с парсерами типа Cabocha или KNP.

Утилита Lexicon

Эта консольная программа позволяет быстро проверить результат сборки словарной базы, описанной в предыдущем разделе. Запустив ее, Вы можете вводить слова и получать результаты поиска в лексиконе словарной базы.

Если вы запускаете утилиту lexicon из папки exe64, то она самостоятельно попытается загрузить словарную базу в папке bin-windows64 или bin-linux64, указывать путь к файлу dictionary.xml в командной строке в этом случае не нужно.

Компиляция утилиты Lexicon под Windows с помощью MS VisualStudio 2015

Проект для сборки лежит в папке src\demo\ai\solarix\lexicon

По поводу использования библиотек Boost - см. пояснения для утилиты Compile выше.

В папке exe64 лежит готовый исполнимый файл Lexicon.exe, который я собрал по текущей версии исходников под Win64.

Компиляция утилиты Lexicon в Ubuntu

Нужно создать временный каталог /tmp/lexicon.

После этого надо перейти в каталог src/demo/ai/solarix/lexicon/ и запустить ./build.sh

После окончания сборки появится исполнимый файл lexicon

Утилита Syntax

Эта консольная программа является отладчиком синтаксического парсера. Она позволяет вводить с клавиатуры предложения, запускать парсинг, задавать точки остановки в правилах разбора, просматривать текущий контекст выполнения синтаксического правила.

Компиляция утилиты Syntax в Ubuntu

Переходим в каталог с исходниками утилиты Syntax src/demo/ai/solarix/syntax и запускаем компиляцию:

./build.sh

После компиляции появится бинарник syntax.

Если при запуске ./syntax появится сообщение, что невозможно найти crfsuite***.so, то скорее всего поможет такая команда:

export LD_LIBRARY_PATH=/usr/local/lib

После запуска утилиты можно ввести предложение, которое будет разобрано:

eek@ubuntu:~/Solarix/GrammarEngine/src/demo/ai/solarix/syntax$ ./syntax  
Solarix SYNTAX parser debugger ver. 14.15.11192 Standard Linux 4.10.0-32-generic x86_64  (build date Sep  6 2017)  
Loading dictionary from ../../../../bin-linux64/dictionary.xml... ok  
Enter #help to read online help.  

: кошка ловит мышей  
BEGIN  ловит ( кошка, мышей )   END  

Команда #tree выведет синтаксическое дерево:

: \#tree  
ловит ( ГЛАГОЛ НАКЛОНЕНИЕ:ИЗЪЯВ ВРЕМЯ:НАСТОЯЩЕЕ ЛИЦО:3 ЧИСЛО:ЕД ~МОДАЛЬНЫЙ ПЕРЕХОДНОСТЬ:ПЕРЕХОДНЫЙ ПАДЕЖ:ВИН ПАДЕЖ:ТВОР ПАДЕЖ:ДАТ ВИД:НЕСОВЕРШ ~ВОЗВРАТНОСТЬ )  
││                                                                                                                                                              
│└─мышей ( СУЩЕСТВИТЕЛЬНОЕ ПАДЕЖ:ВИН ЧИСЛО:МН РОД:ЖЕН ОДУШ:ОДУШ ПЕРЕЧИСЛИМОСТЬ:ДА ПАДЕЖВАЛ:РОД )                                                                
│                                                                                                                                                               
└──кошка ( СУЩЕСТВИТЕЛЬНОЕ ПАДЕЖ:ИМ ЧИСЛО:ЕД РОД:ЖЕН ОДУШ:ОДУШ ПЕРЕЧИСЛИМОСТЬ:ДА ПАДЕЖВАЛ:РОД )                                                                 
:   

C API грамматического словаря

Полный перечень процедур в API с описаниями можно найти на странице.

Компиляция динамической библиотеки

API словаря реализован как динамическая библиотека solarix_grammar_engine.dll на платформе Windows или solarix_grammar_engine.so для Linux.

Для сборки с помощью MS VisualStudio 2015 откройте проект Grammar_Engine_Pro2005.sln в папке .../src/demo/ai/solarix/engines и запустите компиляция. По окончании в папке .../src/lib64 появится файл solarix_grammar_engine.dll.

Для компиляции под Ubuntu запустите скрипт build.sh в той же папке.

Пример использования C API грамматического словаря

Пример на C++ находится в папке .../src/demo/ai/solarix/Grammar_Engine/SimpleGREN.

Консольный парсер

Парсер - консольная утилита, которая умеет выполнять токенизацию, лемматизацию, частеречную разметку (part-of-speech tagging), синтаксический разбор с построением дерева (dependency parsing) и выделение составляющих (chunking). Сборочная инфструкция и подробное описание порядка запуска вынесено на отдельную страницу. Также доступно описание на сайте проекта.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].