воскресенье, 28 сентября 2008 г.

Про мой переводчик. Структура.

Продолжение. Начало смотрим тут. 

Итак, как я уже писал ранее - переводчик является модульным, причем модули должны быть независимы друг от друга. Не то чтобы это было обязательным требованием, однако, чем более связаны между собой модули - тем сложнее их менять. Соответственно, данное требование накладывает определенные ограничения на сам процесс перевода. На данный момент он является линейным. Примерная блок-схема такова:

... правда семантического анализа у меня еще нет.

Такой подход не является обязательным - никто не мешает переделать сам алгоритм перевода. Однако, на данный момент необходимости в этом я не вижу.

В процессе разработки был придуман следующий подход к процессу перевода предложений:

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

Как видно - получившийся алгоритм оказался жизнеспособным.

Вот так вот мутировал изначальный линейный алгоритм в процессе развития:

... синие блоки примерно соответствуют блокам на первом рисунке.

Ну и напоследок - степень завершенности ключевых модулей анализа:

Продолжение следует...

Grammar framework

Нашел некий Grammar framework с исходниками. Если я правильно понял, то основное что он умеет это склонять русские слова. Вообщем, надо смотреть - может и полезная штука :)

пятница, 26 сентября 2008 г.

:)

Чтение из файловых потоков у файлов на NTFS разделах

Как известно, файловая система NTFS позволяет в одном файле хранить т.н. потоки. Цитирую ixbt.com:

Каждый файл на NTFS, в общем-то, имеет несколько абстрактное строение - у него нет как таковых данных, а есть потоки (streams). Один из потоков и носит привычный нам смысл - данные файла. Но большинство атрибутов файла - тоже потоки! Таким образом, получается, что базовая сущность у файла только одна - номер в MFT, а всё остальное опционально. Данная абстракция может использоваться для создания довольно удобных вещей - например, файлу можно "прилепить" еще один поток, записав в него любые данные - например, информацию об авторе и содержании файла, как это сделано в Windows 2000 (самая правая закладка в свойствах файла, просматриваемых из проводника). Интересно, что эти дополнительные потоки не видны стандартными средствами: наблюдаемый размер файла - это лишь размер основного потока, который содержит традиционные данные. Можно, к примеру, иметь файл нулевой длинны, при стирании которого освободится 1 Гбайт свободного места - просто потому, что какая-нибудь хитрая программа или технология прилепила в нему дополнительный поток (альтернативные данные) гигабайтового размера. Но на самом деле в текущий момент потоки практически не используются, так что опасаться подобных ситуаций не следует, хотя гипотетически они возможны.


Так вот, здесь рассказывают как работать с этими потоками используя C#.

Поиск

Товарищи! А не кажется ли вам что Google последнее время стал искать хуже? Ну не то чтобы совсем уж плохо - не получается ткнуть пальцем и сказать, что "вот раньше находил, а теперь нет!". Но уже не первый раз замечаю, что последнее время частенько отсутствует реакция на знаки + и - перед словами. Слова, заключенные в кавычки, зачем-то разделяются и ищутся по отдельности и т.п.

На некоторые запросы вообще выдается такой бред - круче Рамблера :( Попробуйте, например, найти информацию о том, какой у нас в стране срок за геронтофилию. Нет, ну я, конечно, понимаю, что вопрос дурацкий - но вот как-то на работе народ заинтересовался и что? А ничего! Фигни много - полезного так и не нашли...

И последнее время такое все чаще...


Странно это всё...