Вверх ↑
Ответов: 2059
Рейтинг: 132
#1: 2013-11-09 14:24:44 ЛС | профиль | цитата
Наконец то оно заработало)

Слава богу!

А вот этот трассировщик который там появился

Я его пока ещё не доделал.
Надо подумать, как его поизящней сделать.

как добавить слова в словарь?

Просто добавляются слова только для перевода, пример в er.sml.
А в нашем случае этого не достаточно.
Для этого нужна программка, по моемому MorphWizard называется.
Пакет содержит программу редактирования исходников морф. словарей, а также программу генерации бинарного варианта словарей.
Рааньше на aot.ru была, потом кудато этот пост перенесли.
Можно поискать. Но там всё далеко не просто.
В принципе компонент "понимает" такие предложения:
Хливкие шорьки пырялись по наве, и хрюкотали зелюки, как мюмзики в мове.
Компонент поймёт где какая часть речи,но простую форму не выдаст.
Надо подумать, может без словаря можно сдесать.
------------ Дoбавленo в 14.24:
Я ошибся всё ибез словаря работает.
И из моего примера вполне нормальные простые формы получаются.
Так что, - прошу пордону. И словари не надо мучать.
В твоём примере слову шурс ничего не принадлежит.
Оно само принадлежит слову пыльник.
Чтобы оно тоже выводилось надо делать как, я говорил раньше.
Ну и эту можно дополнить.
Паралельно прилагательным, надо искать и существительные в винительном и родительном падежах.
Как-то так:

Make(delphi)
ver(4.04 build 185)
Add(MainForm,1650821,56,161)
{
Width=529
Height=404
link(onCreate,945197:doSetLanguage,[(293,181)(293,216)])
}
Add(ListBox,5543210,63,217)
{
Left=5
Top=10
Width=505
Height=160
Strings=#32:стучит в правом переднем рычаге.|77:Тем более поразительной среди всего этого хаоса казалась тонкая прямая линия.|52:замена правого переднего рычага и левой задней ноги.|43:порван передний левый внешний пыльник шруса|61:Из темноты раздавались странные крики, шорохи и встряхивание.|72:Хливкие шорьки пырялись по наве, и хрюкотали зелюки, как мюмзики в мове.|
DataType=1
link(onClick,7948982:doEvent1,[])
}
Add(ListBox,8311011,800,424)
{
Left=245
Top=180
Width=265
Height=185
}
Add(Hub,7948982,112,224)
{
OutCount=4
link(onEvent1,8311011:doClear,[(438,230)(438,437)])
link(onEvent2,945197:doSetText,[(217,237)(217,223)])
link(onEvent3,945197:doNumOffer,[(217,244)(217,237)])
link(onEvent4,8871095:doFor,[(217,251)(217,440)])
}
Add(Morphology,945197,308,210)
{
link(onNumWord,12220201:doValue,[(520,230)(520,356)])
link(onNumWordConnect,9178194:doCompare,[(386,244)(386,447)])
link(NumOffer,10125215:Value,[(321,174)(293,174)])
link(Mode,14131824:Value,[])
}
Add(For,8871095,308,434)
{
link(onEvent,12198169:doCompare,[(373,440)(373,265)])
link(End,945197:Count_Words,[])
}
Add(ComparisonAttributes,12198169,462,259)
{
Mode=2
Mask="1"
link(onTrue,3339762:doEvent1,[])
}
Add(For,14952044,525,392)
{
link(onEvent,945197:doIConnect,[(569,398)(569,335)(296,335)(296,272)])
link(onStop,14114462:doReset,[(615,405)(615,342)])
link(End,945197:Count_Connect,[(538,306)(342,306)])
}
Add(ComparisonAttributes,9178194,406,441)
{
Mode=2
Mask="3"
link(onFalse,8065439:doCompare,[(446,447)(446,461)])
link(onTrue,9845869:doWork2,[])
}
Add(PointHint,11649182,140,147)
{
Info=#17:Загружает словарь|
Frame=1
Width=120
}
Add(PointHint,286333,140,189)
{
Info=#14:Входная строка|
Frame=1
Width=120
}
Add(PointHint,2591212,140,273)
{
Info=#18:Обязательно нужно!|16:Заполняет массив|15:адресами слов в|18:данном предложении|
Frame=1
VAlign=0
Width=127
Height=60
}
Add(PointHint,7872888,63,448)
{
Info=#37:Запускаем перебор слов в предложении.|
Frame=1
Width=225
}
Add(PointHint,8019754,427,168)
{
Info=#34:Сравниваем все слова в предложении|45:с маской (морф-атрибут) и находим его индекс.|
Frame=1
VAlign=0
Width=211
Height=39
}
Add(PointHint,7064423,126,343)
{
Info=#21:В точку doGetConnect |19:подаём индекс слова|18:для которого будем|13:искать связи.|
Frame=1
VAlign=0
Width=127
Height=60
}
Add(PointHint,8019867,245,511)
{
Info=#44:Сравниваем все связи с маской (морф-атрибут)|21:и получаем их индекс.|40:По этому индексу выводим слова в таблицу|34:через точки doNumWord и onNumWord.|
Frame=1
VAlign=0
HAlign=0
Width=253
Height=81
}
Add(PointHint,9197259,532,497)
{
Info=#25:Перебор всех связей слова|23:через точку doIConnect.|
Frame=1
VAlign=0
HAlign=0
Width=148
}
Add(Memory,14131824,336,140)
{
Default=Integer(1)
}
Add(Hub,3339762,518,266)
{
OutCount=3
link(onEvent1,12787019:doEvent1,[(567,272)(567,318)(415,318)(415,363)])
link(onEvent2,945197:doGetConnect,[(584,279)(584,328)(291,328)(291,265)])
link(onEvent3,14952044:doFor,[(544,286)(544,342)(513,342)(513,398)])
}
Add(Memory,12220201,728,350)
{
}
Add(DoData,13794249,728,420)
{
link(onEventData,8101017:doWork2,[(769,426)(769,430)])
link(Data,8241610:Var2,[])
}
Add(Memory,10125215,287,126)
{
Default=Integer(0)
}
Add(Hub,16547076,539,448)
{
OutCount=3
link(onEvent1,3796868:doEvent1,[(574,454)(574,377)])
link(onEvent2,12787019:doEvent2,[(598,461)(598,415)(415,415)(415,370)])
link(onEvent3,5516962:doData,[])
}
Add(Hub,12787019,427,357)
{
InCount=2
OutCount=1
link(onEvent1,945197:doNumWord,[(453,363)(453,297)(286,297)(286,244)])
}
Add(DoData,5516962,686,462)
{
link(onEventData,8101017:doWork3,[(781,468)])
link(Data,8241610:Var1,[(692,397)])
}
Add(GetDataEx,8241610,728,392)
{
link(Data,12220201:Value,[])
}
Add(HubEx,8101017,777,424)
{
link(onEvent,8311011:doAdd,[])
}
Add(Hub,3796868,630,371)
{
link(onEvent1,14114462:doNext,[(653,377)(653,328)])
link(onEvent2,13452458:doEvent,[])
}
Add(Counter,14114462,672,322)
{
}
Add(IndexToChanel,13452458,672,378)
{
Point(Index)
link(onEvent2,13794249:doData,[(716,391)(716,426)])
link(Index,14114462:Count,[])
}
Add(ComparisonAttributes,8065439,469,455)
{
Mode=2
Mask="1 26"
link(onTrue,9845869:doWork3,[(522,468)])
}
Add(HubEx,9845869,518,448)
{
link(onEvent,16547076:doEvent1,[])
}
карма: 6

0