0 / 0 / 0
Регистрация: 13.12.2012
Сообщений: 47
1

Разработка ИПС. Морфология (локальный словарь)

18.04.2014, 10:12. Показов 3187. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть разработка информационно-поисковой системы на C#. Нужно сделать индексирование с учетом морфологии с использованием локального словаря. Например в листбоксе есть слово "карты", при запросе "карта" должно найти "карты". Подскажите, как сделать.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.04.2014, 10:12
Ответы с готовыми решениями:

Разработка приложения «Интеллектуальный словарь» на MFC AppWizard (exe)
Срочно!!!Разработка приложения «Интеллектуальный словарь». В файле хранится словарь (пр.,...

Морфология
Доброго времени суток! У меня возник вопрос, у меня есть много текстовых файлов с таким содержимым...

разработка программы "Русско-английский и англо-русский словарь"
разработка программы "Русско-английский и англо-русский словарь" Добавлено через 1 минуту...

Морфология языка
Добрый день! я новичок в Delphi, и мне очень надо разобраться с одной программой..что не особо...

9
320 / 280 / 109
Регистрация: 27.09.2010
Сообщений: 1,058
18.04.2014, 11:30 2
иметь словарь с корнями для слов. Вводите поисковое слово. Ищите в словаре корней, ищите любое вхождение коренного слова в вашем листбоксе. Вот и все.
0
0 / 0 / 0
Регистрация: 13.12.2012
Сообщений: 47
26.04.2014, 12:33  [ТС] 3
Как это сделать, накиньте пример какой-нибудь...
0
C#,XNA Game Studio
36 / 36 / 8
Регистрация: 26.04.2014
Сообщений: 195
26.04.2014, 12:56 4
как я понимаю слова должны быть разбиты на группы по корням, допустим группа слов (карта,карты,картой) относятся к группе с ключом карт что то же самое что и корень карт, когда программа находит корень карт в слове, то выдает список возможных слов из группы слов с ключом в виде этого корня.
0
0 / 0 / 0
Регистрация: 13.12.2012
Сообщений: 47
26.04.2014, 13:09  [ТС] 5
Ну да, можно так
0
18 / 18 / 3
Регистрация: 10.04.2012
Сообщений: 150
26.04.2014, 17:04 6
нужно подключать стеммер -который отрезает корни слов от окончаний. Чтоб распознавались однокоренные слова. Для этого подключают морф модули, которые можно взять отсюда http://aot.ru/

Там же можно и про стеммер почитать.
А как либы подключать -у меня была тема здесь, я делала морф.модуль для нахождения нормальной формы слов, там один умный человек мне полезное подсказал и пример кинул.
Существует ли морфологический модуль или подобная библиотека
1
0 / 0 / 0
Регистрация: 13.12.2012
Сообщений: 47
27.04.2014, 15:35  [ТС] 7
Читал эту тему, установил, подключил, но как мне подключить это к своей программке.

Тут часть кода программы.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
 private void button3_Click(object sender, EventArgs e)
        {
            if ((checkBox1.Checked) | (checkBox2.Checked)) //проверяем выбран ли вид поиска
            {
                if (textBox2.Text == "") // проверяем заполнен ли запрос
                {
                    MessageBox.Show("Введите запрос!");
                }
                else if (checkBox2.Checked)
                {
                    listBox1.Items.Clear(); //очищаем листбокс
                    string k1 = textBox2.Text;
 
                    for (int i = 0; i < stroki.Count; i++) //перебираем лист stroki
                    {
 
                        Regex regex = new Regex(k1.ToLower()); //задаем искаемое слово
                        MatchCollection coll = regex.Matches(stroki[i]); //указываем где ищем
 
                        foreach (Match match in coll) //ищем match(наше слово) в coll( наш текст)
                        {
 
                           listBox1.Items.Add("Слово найдено:");
                           listBox1.Items.Add(match.Value.Trim());//выводим найденое слово
                           listBox1.Items.Add("");
                           
 
                        }
                    }
                }
Вот пример как подключить
C#
1
2
3
4
5
 LemmatizerNET.MorphLanguage lang = LemmatizerNET.MorphLanguage.Russian;         // Русский словарь
            LemmatizerNET.ILemmatizer lem = LemmatizerNET.LemmatizerFactory.Create(lang);   // объект лемматизера
            LemmatizerNET.FileManager manager = LemmatizerNET.FileManager.GetFileManager(@"c:\RML\");   // путь к словарям
            lem.LoadDictionariesRegistry(manager);                      // инициализация словарей
            LemmatizerNET.IParadigmCollection paradigmList = lem.CreateParadigmCollectionFromForm("маме", false, false); // создание парадигмы по словоформе
Как мне подключить к моей программе?
0
18 / 18 / 3
Регистрация: 10.04.2012
Сообщений: 150
28.04.2014, 20:14 8
я так понимаю, ты библиотеки подключил в свой проект?Вот эта .net библиотека с примером ее использования, она работает при при наличии установленного с сайта компании АОТ (www.aot.ru) лемматизера (чтобы была папка c:\RML\ со словарями). Если она есть -то все будет работать. Там же находится полный перечень всех анкодов: $RML/Dicts/Morph/rgramtab.tab (дистрибутив «Русская морфология для программистов»).

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

paradigmList2[i].SrcNorm; -нормальная форма слова
а как все формы вызвать -есть в примере.

Получается, вначале тебе надо получить все формы слова, а потом совпадения нужно искать, уже после того, как получишь все возможные формы слова -и уже все совпадения всех форм слова искать в списке. Это если я правильно понимаю твою задачу
0
0 / 0 / 0
Регистрация: 31.05.2013
Сообщений: 44
24.11.2015, 18:42 9
А как вывести к какой части речи принадлежит слово, в этой библиотеке?

Добавлено через 7 минут
Вроде бы SrcAncode выводит часть речи, перед этим надо распарсить rgramtab, чтобы понять.
0
18 / 18 / 3
Регистрация: 10.04.2012
Сообщений: 150
16.08.2016, 03:12 10
вот здесь есть простое и подробное описание, как подключать словари и вообще работать с морфологией
0
16.08.2016, 03:12
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.08.2016, 03:12
Помогаю со студенческими работами здесь

Учитываеся ли морфология?
Наблюдаю картину и немогу понять почему &quot;типа одинаковые&quot; запросы &quot;поздравление днем рождения&quot; и...

Морфология Гугла за 26 июня 2012
&lt;p&gt;Подскажите, какие глобальные изменения прошли у алгоритма гугл 26 июня 2012?&lt;/p&gt; &lt;p&gt;Нашли...

Локальная ИПС
Локальная ИПС должна обеспечивать поиск документов по критерию задаваемому логическими операциями...

База данных, ИПС.
Добрый вечер. В общем, нужно на с++ написать GUI приложение, как информационно поисковую...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru