тут просто еще какой момент, может быть составлен запрос не просто "замена правого рычага", а к примеру " замена подшипника передней ступицы". В этом случае главное слово которое нужно выделить - "подшипник". И по падежам, может быть "стук в правом переднем рычаге". Опять же, нужно выделить " правый передний рычаг". А вообще у вас очень крутой компонент, если он это может
Этот топик читают: Гость
Ответов: 257
Рейтинг: -2
|
|||
карма: 0 |
|
Ответов: 2059
Рейтинг: 132
|
|||
mudfactory
к примеру " замена подшипника передней ступицы".
Тут как раз всё просто. Разложу по полочкам сам алгоритм. имеем: замена замена 25 21 19 1 35 подшипника подшипник 26 22 19 1 35 передней передний 26 21 19 3 35 ступицы ступица 26 21 19 1 35 Можно триады распихать в три списка строк - меньще коммутаций. и имеем: замена < подшипника noun_es gen_es подшипника < ступицы noun_es gen_es передней > ступицы adj_es noun_es 1. запрос "замена" = замена < подшипника замене подчинён подшипник. проверяем сточку 26 22 19 1 35 на наличее 3 (прилагательное) нет - поехали дальше т.е того слова от которого указывает стрелочка. 2. запрос "подшипник" = подшипника < ступицы подшипнику подчинена ступица. проверяем сточку 26 21 19 1 35 на наличее 3 нет - поехали дальше 3. запрос "ступица" = передней > ступицы проверяем сточку 26 21 19 3 35 на наличее 3 есть - приехали. А уж как выводить, - это дело третье. Все подряд, или первое слово и последнее. Как это делается: Связь слов получаем через точки doGetConnect - получаем списк в точке Count_Connect подчинённых слов или наоборот, нас интересует подчинеие. перебираем этот список через точку doIConnect. В точке onNumWordConnect получаем номера интересующих нас слов. В точке Connchr читаем знак подчинения < + >, + равнозначность. Запихиваем эти номера в точку doNumWord и с модом 2 в точке Mode и получаем такие строки 26 21 19 3 35 в точке onNumWord, это равносильно чтению строки из третьего списка строк по индексу, если решили строить схему со списками строк. Всё. |
|||
карма: 6 |
|
Ответов: 257
Рейтинг: -2
|
|||
вам то да просто) Я ничего не понимаю куда там и что. Если не сложно, можно работающий примерчик
|
|||
карма: 0 |
|
Ответов: 2059
Рейтинг: 132
|
|||
mudfactory
Примерно вот так: code_32214.txt Сильно со схемой не заморачивался. По хорошему ещё нухно организовать очередь, или стек для запоминания точек ветвления. Нет защиты переполнения счётчика, если вводимое слово не найдено в первом списке. В поле ввода нужно ввести слово заново! Вывод такой - нужна ещё одна верхняя точка для номера слова в предложении, чтобы морфология и синтаксис работали не зависимо. Нужно сделать дополнительные элементы, чтобы небыло этого безобразия из рассыпухи элементов. Чтобы решать подобные задачи, надо подумать, какое конечное правило будет описывать результат. Подобно прологовским выражениям, а схемное решение - Это уже дело третье. |
|||
карма: 6 |
| ||
файлы: 1 | code_32214.txt [5.4KB] [608] |
Ответов: 2059
Рейтинг: 132
|
|||
Добавлен новый компонент ComparisonAttributes.
Компонент работает в паре с компонентом Morphology и позволяет сравнивать атрибуты слов текста по их индексу с маской запроса с выбраным модом. Пример: code_32243.txt Перед запуском, нужно обновить элемент и установить новый. |
|||
карма: 6 |
| ||
файлы: 1 | code_32243.txt [10.5KB] [972] |
Ответов: 257
Рейтинг: -2
|
|||
Что то в примере у вас вообще ничего не понятно. Таблица какая-то, а ваших компонентов нет. Зато вроде нашел схему в аргиве с новым компонентом, но она не запускается выдает ошибку runtime error, хотя судя по всему с этим компонентом наконец то можно будет искать правый передний рычаг по запросу "замена правого переднего рычага")
Разобрался как запустить чтоб без ошибки. |
|||
карма: 0 |
|
Гость
Ответов: 17029
Рейтинг: 0
|
|||
Редактировалось 5 раз(а), последний 2021-06-22 14:18:29 |
|||
карма: 0 |
|
Ответов: 2059
Рейтинг: 132
|
|||
mudfactory
Пояснения к схеме: 0. Сначала нужно обновить компонент Morphology!!! 1. Любой новый текст должен быть сначала обработан - кнопка "Parse" (точка doSetText). 2. При смене номера предложения в поле "№ предложения", надо нажать кнопку "OK". Иначе будет появляться ошибка. В одном предложении 10 слов, а в другом два. 3. В поле атрибуты не должно присутствовать два пробела между числами и в начале тоже не должно присутствовать пробела. Надо делать выбор части речи, числа и падежа вместе в одном запросе, или по одному-двум параметрам следя за пробелами. Это пример и никаких мер за правильностью ввода не сделано. 4. Если вместе с параметром (2)- глагол, будет стоять падеж (25..30), то ничего найдено не будет, - потому что у глаголов нет падежей! 5. Конечно не все значения атрибутов присутствуют в примере, иначе пришлось делать 47 радиокнопок. Поэтому, надо вводить параметры вручную, - согласно таблице. |
|||
карма: 6 |
|
Ответов: 257
Рейтинг: -2
|
|||
flint2, чувствую что без вашей помощи не разберусь. Как мне сделать чтоб он показал существительное и все прилагательные к нему? При том что предложение одно?
Вообще было бы круто еслиб был компонент который выводил слова в предложении - верхняя точка (сюда строка подается), входная начинает перебор, выходные: 1.выдает существительное 2.выдает прилагательное 3. выдает глагол . И нижние точки которые сожержат существительные (если несколько), прилагательные и т.д.. Точка с предлогами включается в свойствах элемента. Второй элемент выводил бы простые формы слов (или можно по падежам) Вообще гораздо лучше и удобнее когда за каждую функцию отвечает один элемент а не за все один - тогда получается очень сложно и кучу всего нужно на него подавать, что в рамках большой программы не совсем удобно |
|||
карма: 0 |
|
Ответов: 2059
Рейтинг: 132
|
|||
mudfactory
Вообще было бы круто еслиб был компонент который выводил слова в предложении - верхняя точка (сюда строка подается), входная начинает перебор, выходные: 1.выдает существительное 2.выдает прилагательное 3. выдает глагол . И нижние точки которые сожержат существительные (если несколько), прилагательные и т.д.. Точка с предлогами включается в свойствах элемента.
В таком случае пары сотн точек не хватит. Слишком громоздко будет + какая схема коммутации-обслуги. Кроме существительного, глагола и прилагательного есть: наречие, числительное, местоимение, частица, союз, предлог, причастие, деепричастие, вводное слово (по счастью), неизменяемое слово и предикатив или слово, состоящее из цифр + знаки пунктуации. И на всё это по точке? выходные: 1.выдает существительное
6 падежей, 3 рода, 2 числа, одушислённоенеодушислённое, 3 лица (1,2,3). С глаголом всё ещё страшнее: сниться = 40 36 31 22 19 2 33 34 35 41 Туча спряжений, финитная форма , инфинитив, 3 времени, 2 числа, 3 рода, 3 лица, повелительноеизъявительное наклонение, активныйпассивный залог, краткая форма. С прилагательным не проще. Так что с кучей точек вариант не прокатывает. Проще искать по такой маске 40 36 31 22 19 2 33 34 35 41, причём если вся эта лабуда не интересует, а нужно знать существительное или глагол - просто 1 или 2. При том что предложение одно?
Тогда не нужно делать перемещения по индексам предложий, один счётчик уже не нужен. Как мне сделать чтоб он показал существительное и все прилагательные к нему?
А если там их (существительных) несеолько? По науке надо бы от глагола. Завтра нарисую схемку с пояснениями в ней. Единственно что видится логичным, так это компонент трассирующий цепочки подчинения или сочинения, т.е те цепочки, в которые входит интересующее нас слово. Но завтра наверное не смогу его сделать. |
|||
карма: 6 |
|
Ответов: 257
Рейтинг: -2
|
|||
Ну зачем так сложно. Может в специфических областях конечно потребуется, но вот реальный пример из жизни, где нужно получить существительное и слова относящиеся к нему, опять же про рычаг, будь он не ладен:
стучит в правом переднем рычаге - ищем существительное "рычаг", с другой точки прилагательные "правом" "переднем", дальше форматстрингом переводя предварительно в простые формы "правый передний рычаг". |
|||
карма: 0 |
|
Ответов: 2059
Рейтинг: 132
|
|||
mudfactory
Разобрался как запустить чтоб без ошибки.
На всякий случай изменил пут к словарям в ini файле, стало ".". Тепер не должно возникать вопросов. Архивы перезалил. Можно просто поправить ini или в самом компаненте путь по умолчанию. Как мне сделать чтоб он показал существительное и все прилагательные к нему?
Вот схема: code_32267.txt Ну зачем так сложно.
Мне кажется, что так проще (смотри схему), чем куча точек. По сути ты предложил компонент под конкретную задачу. На практике вся работа идёт с маской, и её легче менять, чем коммутировать точки. прилагательные "правом" "переднем", дальше форматстрингом переводя предварительно в простые формы "правый передний рычаг".
В компоненте Morphology на точку Mode надо подать "1". |
|||
карма: 6 |
| ||
файлы: 1 | code_32267.txt [3.6KB] [601] |
Ответов: 257
Рейтинг: -2
|
|||
Спасибо, пример работает. Но это нужно знать заранее какое слово там существительное, что на практике не реально. Из набранного предложения существительное и прилагательные к нему он так и не выводит без ручного указания на то какое слово там существительноею и выдает ошибку runtime error. Рабочий вариант предполагает всего два поля - в первое пишем предложение, во второе выводится существительное и прилагательные к нему (в простой форме)
|
|||
карма: 0 |
|
Ответов: 2059
Рейтинг: 132
|
|||
выдает ошибку runtime error.
Таакая ситуация может возникнуть, когда не указана маска - чего искать, или где (пустая строка). Но нельзяже искать пустоту. так и не выводит без ручного указания на то какое слово там существительноею
А как иначе? Чего то я совсем ничего не пойму. предполагает всего два поля - в первое пишем предложение, во второе выводится существительное и прилагательные к нему (в простой форме)
Это вообще не могу понять. В предложении исходные данные, а где вопрос и по какому критерию чего искать? Это просто сделать, плясать нужно от глагола, я уже об этом говорил. Задачу нужно формулировать хотя бы в терминах "если - то - иначе". Тогда будет понятно, что сначала нужно найти глагошл, а потом все относящиеся к нему существительные и т.д. Как мне сделать чтоб он показал существительное и все прилагательные к нему?
Вот такой был вопрос. Подобный случай был, когда в СССР ещё не существовало PC. Я сделал самодельный Apple с выводом на телевизор. Сосед посмотрел и говорит на полном серьёзе, - "А пусть компьютер скажет: будет премия у нас в этом месяце, или нет?". |
|||
карма: 6 |
|
Ответов: 257
Рейтинг: -2
|
|||
компонент может перебрать все слова в предложении и найти все существительные, все прилагательные и т.д.? Вводим предложение в поле. Нужно найти сначала все существительные в нем, если это возможно, то найти связанные с этими существительными прилагательные. Вот в виде цифр это делается тремя компонентами , перебор массива, if и собственно таблица строк. В виде слов если это вашим компонентом не сделать, тогда смысл теряется что-либо искать, зачем мне найденые прилагательные, если я должен в ручную вводить существительное? Я так же могу вручную и пралагательные вписать. Нужно находить это без указания или ввода какого-либо дополнительного слова. По какому критерию искать? -
предложение (одно, а не абзац текста) - замена правого переднего рычага, вот тут нужно все, кроме слово замена. если он выдас с этого предложения "рычага правого переднего" и второй порцией "замена", ничего страшного, все равно потом по запросу "замена" программа не найдет в базе рычаг, а по следующему запросу "рычаг правый передний" этот рычаг таки найдется. |
|||
карма: 0 |
|