Морфология русского языка. Подходы.

Popoff

popoff.donetsk.ua
Автор оригинала: Long
kvf77, ispell позволит составить только основу будущей системы. далее - ее нужно вычищать и расширять вручую. а каким образом реализовывать алгоритм нахождения основной формы слова - это дело "десятое", тут главное словарь иметь хороший.
чуть изменить формат словарей для испела. записывать все начальные формы, соответсвующие одному слову в одной строке. а дальше.. терпенье и труд всё перетрут :)
 

Long

Новичок
Popoff, собственно я примерно это и имел ввиду под "вычищать и расширять" :)
 

Sniff

Новичок
Меня, в общем, интересовали, готовые решения... как писать свой замут, и какие направления имеет смысл разрабатывать, в общем-то, понятно...
а есть, интересно, базы "полуфабрикатов", например, корней русских слов, приставок, суффиксов, и так далее?
моя задача, например, не совсем поиск. Важно идентифицировать разные склонения как одно и то же слово. Вроде по сканам Железняка (а также по его онлайновым имплементациям) можно предположить, что он позволит выделять основу более эффективно, чем ispell
Кстати, кто-то знает, что за словарь Книжника такой? Основной файл там выглядит примерно так:
0юан
3ей

1балхо
2ер
4а/E
4ляден/K
2илаумшахт
4ее


5и/F

6ная/C
7ом/A
6чик
4яра/E
2ка/E

3ой
2ок
3чек
4ке
5и/
а подобия аффиксного файла я как-то не нашел.
Кто знает, что за формат такой?
 

vitovt

Новичок
а есть ли какие-нибудь примеры скриптов для работы с ispell ? Буду очень благодарен за подсказки ))
 

Wicked

Новичок
я делал развертывание ispell'а в mysql. После чего приведение к нф инверсного индекса производится простым джоином. Для меня этот вариант оказался оптимальным ввиду скорости его работы. Правда mysql-таблички занимают 113 мб :)

ЗЫ: а теме то уже сто лет в обед :)
 

vitovt

Новичок
Автор оригинала: Popoff
vitovt
Есть примеры скриптов.
если не сложно, можно парочку примеров ) а то я кажеться все переискал и ничего не нашел (

-~{}~ 01.03.07 16:16:

неужели ни у кого не осталось исходников?
 

kostya.sys

Новичок
Когдато много времени и сил убил на это
В итоге попробовал http://www.risearch.org/rus/risearch_php/index.html

Готовое решение на пхп использующее словарь Зелизняка (или как там его)

Бесплатно предоставляется кастрированная версия, за небольшие денежки (порядка 50 баксов, если ничего не изменилось) можно купить полную.

В настоящее время использую этот скрипт при индексации публикаций в нескольких проектах.

Надеюсь пригодится

ЗЫ: в довесок к платной версии получил скрипт, позволяющий дополнять базу из ISPELL
 

vitovt

Новичок
я пробовал, но что-то не подходит оно мне. Мне тут выдали один скриптец для работы с ispell но он как-то странно себя ведет:

<?
function ispell($words) {
global $config;
if (!sizeof($words)) return;
$descriptorspec = array(
0 => array("pipe", "r"),
1 => array("pipe", "w"),
// 2 => array("file",
_file_root."include/log/pipe.log", "a"),
);
$cmd =($config['isLocal'])?"c:\\ispell\\bin\\ispell.exe -a -d c:\\ispell\\lib\\russian":"ispell -a -d russian";
$process = proc_open($cmd, $descriptorspec, $pipes);
if (is_resource($process)) {
unset($w);
for ($i=0;$i<sizeof($words);$i++) if
(!preg_match('/[0-9a-z]/i',$words[$i])) $w[]=$words[$i];
if (is_array($w)) fwrite($pipes[0],implode(' ',$w));
fclose($pipes[0]);
$ret=array();
$cnt=0;
while(!feof($pipes[1])) {
if (preg_match('/[0-9a-z]/i',$words[$cnt]))
{$ret[]=strtolower($words[$cnt]);$cnt++;}
else {

$fn=_strtolower(preg_replace('/\n|\r/','',fgets($pipes[1],1024)));
if ($fn and $fn[0]!='@') {

$fo=_strtolower($words[$cnt]);
if ($fn[0]=='*') $ret[]=$fo;
elseif ($fn[0]=='+') {
preg_match('/.
([а-я]+)/',$fn,$out);
$ret[]=$out[1];
}
elseif ($fn[0]=='&' or
$fn[0]=='#') {
$ret[]=$fo;
}
$cnt++;
}
}
}
fclose($pipes[1]);
$return_value = proc_close($process);
return $ret;
}
}


?>

-~{}~ 01.03.07 18:38:

Причем этот скрипт ничего не возвращает (кроме первой буквы слова, которое передаешь в функцию) а вот если вставляешь английское слово како-нибудь то выводит просто массив букв )
 

stalesha

Новичок
Может кто подскажет какие сушествуют алгоритмы нахождения устойчивых словосочетаний.

Пока что нашел вот этот http://www.dialog-21.ru/Archive/2004/Salomatina.htm
 
Сверху