Как использовать новый алгоритм Snowball .sbl в Python?

Я хочу использовать стеммер литовского языка в Python, однако литовский язык отсутствует в распространенных инструментах, таких как NLTK. .

Однако я смог найти файлы Snowball .sbl литовских стеммеров здесь и здесь.

Но как их использовать в Python?

Что мне удалось найти, так это подход командной строки для получения файлов .c. Но что дальше?

Как указано на официальной странице, существует PyStemmer — интерфейс Python для Snowball. Но там я не смог найти способа использовать новые или пользовательские алгоритмы .sbl.

Итак, как получить новый алгоритм .sbl для Python?


person Lukas    schedule 10.02.2018    source источник
comment
Вы нашли решение?   -  person Abhishek Thakur    schedule 02.07.2018


Ответы (1)


На данный момент литовский язык добавлен в репозиторий Snowball git repo, но pyStemmer использует старую версию этого репо, которое его не содержит. Мне не удалось правильно установить новую версию Snowball на python, вместо этого я использовал исполняемый файл c с модулем подпроцесса python.

Для этого вам просто нужно клонировать репозиторий, установить его с помощью команды make и тогда вы получите исполняемый файл Stemwords. Вы можете протестировать литовский язык с помощью команды в unix-терминале ./stemwords -l lt, а затем ввести слова, которые вы хотите обработать.

Использование его с подпроцессом python для файлов процессов, содержащих слова, которые нужно вывести построчно:

import subprocess
args = ("./stemwords", "-l", "lt", "-i", "input_file.txt", "-o", "output_file.txt")
popen = subprocess.Popen(args, stdout=subprocess.PIPE)
popen.wait()

входной файл:

Kodėl
moteriai
vienišai
ištekėjusiai

выходной файл:

kod
mot
vieniš
ištekėjus
person Paulius Venclovas    schedule 03.08.2018
comment
Как установить на виндовс? [ссылка] sourceforge.net/projects/gnuwin32 make в Windows выдает ошибку: The system cannot find the path specified. GNUmakefile:48: algorithms.mk: No such file or directory make: *** No rule to make target `algorithms.mk'. Stop. - person Lukas; 20.10.2018