Шесть мартышек, может быть, и напечатают Шекспира за миллион лет, а вот создать хороший программный код у них вряд ли получится....
четверг, 28 августа 2008 г.
четверг, 14 августа 2008 г.
Наглядная математическая статистика
Несколько глав из "Наглядной математической статистики: ch04.djvu ... ch08.djvu. Это теория. Практические главы во второй части. Я их, может быть, позже отсканирую.
на
21:14
0
коммент.
вторник, 5 августа 2008 г.
.Last.value
Ну вот и пригодилось! )
Запустил hclust в top-level. Полчаса программа чего - то шуровала в свопе и затем счастливо сообщила:
Call:
hclust(d = dist(tdm), method = "ward")
Cluster method : ward
Distance : euclidean
Number of objects: 468
От повторного запуска меня спасло .Last.value
на
18:30
0
коммент.
пятница, 1 августа 2008 г.
Десятый день (string kernel)
ЗАДАЧА
Поставлена задача - сравнение слов, из - за орфографических ошибок или применения различных схем транслитерации незначительно различающихся в написании. Обычно эти слова - имена собственные, например, фамилии и имена индийских программистов / богов.
РЕШЕНИЕ
Есть идея - использовать метрический подход. Меру схожести можно задавать по - разному, но я не буду "изобретать велосипед", а проверю string subsequence kernel.
> library(kernlab)
> sapply(1:4, function(i) 1 - stringdot(i)("Ivanov", "Ivanova"))
[1] 0.04059678 0.06617810 0.11842085 0.17463783
> sapply(1:4, function(i) 1 - stringdot(i)("Ivanov", "Iwanow"))
[1] 0.5000000 0.5938462 0.7684211 0.9487179
> sapply(1:4, function(i) 1 - stringdot(i)("Ivanov", "Ivanow"))
[1] 0.1339746 0.2118939 0.2947368 0.4358974
> sapply(1:4, function(i) 1 - stringdot(i)("Moscow", "Moscva"))
[1] 0.2783122 0.4298703 0.5800510 0.7948718
> sapply(1:4, function(i) 1 - stringdot(i)("Moscow", "Moskva"))
[1] 0.4226497 0.6327978 0.8320204 1.0000000
> sapply(1:4, function(i) 1 - stringdot(i)("Moscow", "Moskwa"))
[1] 0.2783122 0.5687790 0.7952749 0.9743590
> sapply(1:4, function(i) 1 - stringdot(i)("Vainoopuya", "Vaynopuya"))
[1] 0.1105008 0.2817140 0.4582484 0.5662287
> sapply(1:4, function(i) 1 - stringdot(i)("Vainoopuya", "Vaynoupuya"))
[1] 0.1314010 0.3545168 0.5902365 0.7399516
> sapply(1:4, function(i) 1 - stringdot(i)("Zloy", "Dobriy"))
[1] 0.5917517 0.9734512 1.0000000 1.0000000
Рассматривается несколько ядер, задаваемых подстроками с длинами от 1 до 4.
ВЫВОД
Даже в базовом варианте результаты, как и ожидалось, хорошие. Схожие слова близки - различные далеки. Результаты можно улучшить, используя различные веса (задавая их по статистическим данным или из лингвистических соображений). Кстати, насчёт лингвистики: можно ещё попробовать вероятностные грамматики.
на
22:10
0
коммент.
