![]() |
Модераторы: korob2001, ginnie |
![]() ![]() ![]() |
|
Zuzu |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 140 Регистрация: 19.10.2006 Где: Екатеринбург Репутация: 3 Всего: 4 |
LisaST, (можно на ты? - так быстрее), давай "вернемся к истокам" и попробуем перепоставить задачу. Может она решится быстрее? Постараемся описать ее в человеческих или, в крайнем случае, математических терминах.
Итак, описание. Пусть: W - множество тестируемых элементов - слов. p(W) - количество (число) элементов в этом множестве. Двух одинаковых элементов-слов во множестве нет, Будем считать, что, если мы во множество добавляем элемент-слово, которое уже было в этом множестве, множество не изменяется (классическое опредеделние множества). С - множество частей речи. Например: {сущ., прил., глагол., причастие., деепричастие., } (вниманиию программистов! {} - здесь не хэш, а обозначение множества ![]() tagger() - некая процедура, которая для всякому (любому) w из W ставит в соответствие некий один c из C. Или, говоря, по-русски, для каждого слова (из тестируемых слов) определяет, к какой части речи оно принадлежит. Или, вернемся к математике, каждому w из W ставит в соответсвие двойку (w, c): w -> (w,c) (здесь снова не список-массив, а обозначение упорядоченной двойки! будьте внимательны, господа программисты!) Как работает эта процедура внутри - да нам по-барабану! Самое главное - ставит в соответсвие и все! goldStandart - а это вот супер-таггер! Он не только ставит в соответствие (т.е. по сути является тэггером), но и делает это ПРАВИЛЬНО. Мало того, он должен быть определен для каждого w из W или, говоря по-русски, раз уж ты супер-тэггер - будь добр, выдай правильный результат для любого слова из нашего словаря. Что же такое качество тэггера? Осмелюсь предположить, что это некое отношение кол-ва правильно определенных частей речи (для каждого w из W) к общему кол-ву вариантов, или, что то же самое, к кол-ву элементов-слов в нашем множестве W или p(W). Вспомните мое замечание про то, как мы условились определять разные элементы во множестве! Как определить правильность работы тэггера для каждого конкретного слова? Да просто! Сравнить двойки, которые породил наш, исследуемый тэггер и goldStandart. Если эти двойки равны (т.е. первые элементы двоек и вторые элементы двоек попарно равны между собой - вспомните определение равенства векторов из математики!), то наш тэггер выдал правильный результат - ему плюс! Считаем кол-во правильных вариантов, делим на число слов в исходном массиве - получаем характеристику тэггера. Все. Славно, правда? LisaST, на уровне описания модели все правильно? Это сообщение отредактировал(а) Zuzu - 19.1.2007, 15:44 --------------------
Проводить эксперименты на живом сервере опасно, а на мертвом - бесполезно. |
|||
|
||||
LisaST |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 56 Регистрация: 8.4.2006 Где: Munich Репутация: нет Всего: нет |
алгоритм описан совершенно точно. для amg помещаю пример из файлов (цифры я удалю для дальнейшей обработки, меня теперь просто интересует, делает ли 1 вариант программы amg иммено то, что описано выше, из-за проблемы с повторяющимися словами могут быть большие отклонения от верного результата ):
и так 2 мегабайта предположительных существительных в обоих файлах tagger_to_test.txt
goldstandard.txt
|
||||
|
|||||
Zuzu |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 140 Регистрация: 19.10.2006 Где: Екатеринбург Репутация: 3 Всего: 4 |
Стоп! Где указано, к какой части речи принадлежит каждое слово? tagger, по описанной выше модели должен сопоставить слову часть речи! Или tagger выбирает из исходного множества слов только те слова, которые он считает существительными (а про остальные слова нам ничего не скажет) и записывает в файл? В проектировании ПО это называется нарушением начальных условий и обычно приводит к неверному результату работы ПО. Как и здесь, собственно, произойдет. Поясню. Мы вообще правильной оценки работы tagger'a не получим! Я опираюсь только на описанную выше модель и элементарную математику. Приведу пример:
LisaST, опиши, пожалуйста, как получаются представленные тобой файлы. Может я чего неверно понял/ P.S. LisaST! Я ушел достаточно далеко от твоего алгоритма и того вопроса, который ты задавала. Если это тебе здесь не нужно, а нужно просто помочь решить (запрограммировать) конкретную задачу сравнения двух файлов по какому-то алгоритму - скажи, мне, пожалуйста, об этом. Никто не обидется! Это сообщение отредактировал(а) Zuzu - 19.1.2007, 11:36 --------------------
Проводить эксперименты на живом сервере опасно, а на мертвом - бесполезно. |
||||
|
|||||
LisaST |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 56 Регистрация: 8.4.2006 Где: Munich Репутация: нет Всего: нет |
то, что находится в 2 тестируемых файлах - это только сущ.(были помечены теггерами как сущ), кот. я экстаргировала из текста,обработанного теггером, смотри пример, вот их кол-во и надо сравнить, потом я экстаргирую глаголы, прил. етц. Пример: 1 программа амг посчитала, что одинаковых слов в файлах с сущ 259227, по формуле получается, что Precision 0.93, а Recall 0.96 для моего тестируемого теггера, но я просто сомневаюсь насчет одинаковых слов (см мои посты выше)
iz goldstandard.txt
|
|||
|
||||
Zuzu |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 140 Регистрация: 19.10.2006 Где: Екатеринбург Репутация: 3 Всего: 4 |
LisaST. Согласно основам теории информации, экономия времени пишущего возможна только за счет "растраты" времени читающего. Пожалуйста, пиши понятно и простыми русскими, или в крайнем случае, математическими-общеупотребительными терминами. Давай исходить из предположения, что все программисты (и я, собственно, в их числе) ничего не смыслят в лингвистике и им все приходится объяснять, как детям малым.
Мысли одну от другой лучше отделять абзацами - так понятнее. Прости за замечание. Правда, очень тяжело твои тексты читать - я же не лингвист! А теперь к делу. LisaST, давай подождем с экстрагированием, а? (т.е. c извлечением из всего массива слов только тех, которые tagger пометил, как существительное, в частности). Итак, ура! Двойки есть. Двойки от goldStandart! Очевидно, подобный файл есть и от испытываемого tagger'a? Да? 1. LisaST, напомни пожалуйста, что такое Precision Recall (одним словом, можно формулой, например: Precision = good_words / all_words, где good_words - количество правильно определенных слов, all_words - общее количество слов в нашем множестве. Чтобы проверить, правильно ли это считает программа amg, нужно знать их определения (формулы). 2. Выходит, я зря потребовал отношения порядка на нашем множестве слов W. Из приведенных примеров мне стало видно, что оно нам не поможет в оптимизации. А жаль. И неверно определил, какие слова на нашем множестве необходимо считать разными. Будем пользоваться классическим определением. Если слово "собака" встречается два раза, то это одно слово. Каюсь, был неправ. Испправлю в своем первом топике. было:
С правильным определением множества исчезнут проблемы в повторяющимися элементами. Исчезнут на корню! Поверь! Это сообщение отредактировал(а) Zuzu - 19.1.2007, 15:48 --------------------
Проводить эксперименты на живом сервере опасно, а на мертвом - бесполезно. |
|||
|
||||
LisaST |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 56 Регистрация: 8.4.2006 Где: Munich Репутация: нет Всего: нет |
sorry, если непонятно, сложно аналог каких-то терминов podobrat'
ответы на вопросы: - да, такой же файл с теггами существует и для тестируемого теггера, только тегги там немного по другому обозначены - если одно слово встречается 2 раза, то нужно это учитывать - формулы расписываются след. образом: N - число одинаковых слов (помеченных как сущ в нашем случае) в Ф1 и Ф2 G - число слов, помеченных как сущ в goldstandard C - число слов, помеченных как сущ в тестфайле (обработан теггером, кот. я тестирую) Precision = N/C Recall =N/G проясняет ситуацию? |
|||
|
||||
Zuzu |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 140 Регистрация: 19.10.2006 Где: Екатеринбург Репутация: 3 Всего: 4 |
LisaST, спасибо за ответ.
Заставило задуматься. Думал, ответ (в виде готовой программы) найдем уже сегодня. А вот нет... Появляются новые артефакты... Формулы заставили задуматься... Если так, модель определена не совсем корректно. 1. Можешь ли ты указать взаимно однозначное соответствие обозначений в файле-результате работы taggera и в файле от golgStandart? Хотя бы для тех частей речи, которые тебя интересуют. Пример: Пусть в файле, полученном в результате работы tagger'a части речи обозначены по-русски, тогда, сможешь ли ты указать взаимно однозначное соответсвие между ними в виде например: артикль - at глагол - vb глагол_в_прошедшем_времени - vbd 2. Может взаимно однозначного соответсвия совсем нет? Например, tagger помечает все существительные, а goldStandart различает существительные множественного и единственного числа. 3. Тебе для оценки таггера нужно объединить глаголы прошедшего времени с глаголами настоящего времени (назовем их просто_глаголы) или они должны быть разделены? Пожалуйста, расскажи, как ты эти вопросы (1. 2. 3.) решила на этапе экстрагирования - извлечения нужных данных. 4. Если не трудно, кусок файла - результата работы taggera. .... Еще пара вопросов будет по формулам... Чуть позже.... --------------------
Проводить эксперименты на живом сервере опасно, а на мертвом - бесполезно. |
|||
|
||||
amg |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1145 Регистрация: 3.8.2006 Где: Новосибирск Репутация: 38 Всего: 50 |
LisaST, вот еще одна программка, может, пригодится. Она вычисляет 8 чисел: общее кол-во слов и кол-во уникальных слов в файлах goldstandard.txt и tagger_to_test.txt, а также те же самые величины, которые получатся после того как из этих файлов убрать общие слова (с учетом повторений). Может, из этих величин Вам удастся вычислить какие-нибудь Precision и Recall.
|
|||
|
||||
Zuzu |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 140 Регистрация: 19.10.2006 Где: Екатеринбург Репутация: 3 Всего: 4 |
LisaST, давай вернемся к формулам.
Пусть хороший tagger (good_tagger) выдал: Мама/сущ. мыла/гл. раму/сущ. ./. Мама/сущ. любит/гл. Лизу/сущ. ./. goldStandart выдал: Мама/сущ. мыла/гл. раму/сущ. ./. Мама/сущ. любит/гл. Лизу/сущ. ./. (я не ошибся с частями речи? мои знания - только из средней школы, а это было давно!) bad_tagger выдал: Мама/сущ. мыла/гл. раму/гл. ./. Мама/сущ. любит/гл. Лизу/гл. ./. Посчитай (на бумажке, пользуясь только определениями) значения N, G, C, всех разумных частей речи (сущ., гл.) для случая good_tagger + goldStandart и bad_tagger + goldStandart. Всего должно быть 12 чисел ![]() Это сообщение отредактировал(а) Zuzu - 20.1.2007, 14:43 --------------------
Проводить эксперименты на живом сервере опасно, а на мертвом - бесполезно. |
|||
|
||||
Zuzu |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 140 Регистрация: 19.10.2006 Где: Екатеринбург Репутация: 3 Всего: 4 |
LisaST, Стоп! Не нужно ничего считать! Но этот пример нам понадобится!
Секунду, дамы и господа! По второй ссылке, указанной LisaST, ( http://en.wikipedia.org/wiki/Information_retrieval) сходить настоятельно рекомендую тем, кто интересуется работой всяких поисковых движков (типа яндекса, например)! В статье теоретическая чаcть всего этого, описанная на нормальном, математическом языке. Это круто! Надеюсь сегодня у меня будет время прочитать и понять это и адекватно задать вопрос. Вот еще славная ссылка, тут все объяснено на картинках: http://www.hsl.creighton.edu/hsl/Searching...-Precision.html Это сообщение отредактировал(а) Zuzu - 20.1.2007, 17:50 --------------------
Проводить эксперименты на живом сервере опасно, а на мертвом - бесполезно. |
|||
|
||||
LisaST |
|
||||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 56 Регистрация: 8.4.2006 Где: Munich Репутация: нет Всего: нет |
да, ты прав, полного взаимного соответствия нет, в голдстандард примерно 85 тегов, а в тестуруемом файле намного меньше, но различие по мн и ед. числу сущ существует. Я эту проблему никак не решала, т.к. это бы неймоверно усложнило задачу, я просто экстрагирую все! виды сущ из обоих файлов не разделяя их по группам, конечно будут какие-то отклонения, например, если тег в test.txt определен неверно kak сущ и это был глагол с s на конце и это слово совпадает с сущ мн/ч в goldstandard.
глаголы я пока еще не экстрагировала, но тут задача будет посложнее, чем с сущ, т.к. надо подумать, разделить ли например обычные гл. и гл to be, т.к. в голдстандард почти для каждого вида гл. существуют разные теги. test.txt
|
||||||
|
|||||||
Zuzu |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 140 Регистрация: 19.10.2006 Где: Екатеринбург Репутация: 3 Всего: 4 |
amg, к сожалению, не удастся! В этих файлах меньше данных, чем нужно для этого! Будет время сегодня, разберусь с формулами и напишу. LisaST, 1. Напиши, пожалуйста, описания (тэги) для существительных для нашего тестируемого таггера и для goldStandart должно быть что-то типа: tagger: сущ1 сущ2 сущ3 суще goldStandart: susch-1 su_1 s=== 2. Как принято поступать со словали (английского языка - его немного знаю...) которые могут быть разными частями речи и goldStandart честно об этом должен сказать. Например: Computer (прил.) system - Компьютерная система My computer (сущ.) - мой компьютер Или в английском языке computer - всегда существительное, вне зависимотси от контекста? И goldStandart так и скажет? Это сообщение отредактировал(а) Zuzu - 20.1.2007, 16:10 --------------------
Проводить эксперименты на живом сервере опасно, а на мертвом - бесполезно. |
|||
|
||||
LisaST |
|
||||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 56 Регистрация: 8.4.2006 Где: Munich Репутация: нет Всего: нет |
на этом примере ничего не удастся определить, т.к. для расчета P i R требуется большая выборка. В этом случае для bad tagger получится P = 1, R = 0.5, но это не показательно, т.к. чем больше текст, тем тожнее можно определить P i R.
для goldstandard http://www.comp.leeds.ac.uk/amalgam/tagsets/brown.html ------------------------------------------------ для testfile немного видоизменненный http://www.ims.uni-stuttgart.de/projekte/C...TreebankTS.html
это будет зависеть от контекста, т.к. goldstandard был проверен вручную встречаются оба варианта, хотя Executive тоже может быть сущ, а state прил. Обычно такие проблемы решаются в теггерах с помощью вероятностей, напр вероятность, что перед сущ стоит артикл' выshе, чем для прил. и это учитывается в процессе обработки текста, но в моем случае это не суть важная проблема Executive/jj-tl Committee State/nn-tl Welfare |
||||||
|
|||||||
Zuzu |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 140 Регистрация: 19.10.2006 Где: Екатеринбург Репутация: 3 Всего: 4 |
Страннно, по определениям описанным в указанных тобой источниках, у меня получилось: Для существительных: Recall: 33,33% Precision: 100% Для глаголов: Recall: 100% Precision: 66,66% Мы пользуемся разными формулами? Для существительных: Recall: есть отношение кол-ва правильно выбранных tagger'ом существительных к количеству всех существительных в нашем множестве (сколько сущ. показал goldStandart). Presision: есть отношение кол-ва правильно выбранных tagger'ом существительных к общему кол-ву сущ., которые выбрал tagger ( http://www.hsl.creighton.edu/hsl/Searching...-Precision.html )
В определение Recall и Precision включено понятие релевантности, т.е. правильности выбора. Как ты решила определить правильно ли испытуемый tagger определил слово Computer, например. Он говорит, что это сущ., а в goldStandart - сущ и прил. ? LisaST, про формулы. Эти определения полностью эквивалентны (я проверял) описанным в ( http://en.wikipedia.org/wiki/Information_retrieval ) Только в wiki эти определения описаны в терминах множеств (что я считаю более правильным), а, по указанной в начале поста ссылке - в терминах чисел. Это сообщение отредактировал(а) Zuzu - 20.1.2007, 18:02 --------------------
Проводить эксперименты на живом сервере опасно, а на мертвом - бесполезно. |
||||
|
|||||
LisaST |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 56 Регистрация: 8.4.2006 Где: Munich Репутация: нет Всего: нет |
мы пользуемся одинаковыми формулами, у меня Precision dlja "bad tagger" = 2/2 Recall = 2/4, (4 здесь число сущ в goldstandard)
проблема в том, что я могу определить релевантность с точностью до 100% только вручную, но на текстах в 9 мегабайт это нереально. Поэтому тот алгоритм сравнения, кот. я хочу использовать довольно "груб", но пока ничего лучшего в голову не приходит. Напр, если в голдстандард комьютер встречается 4 раза и 3 раза определен как сущ, а 1 раз как прилагательное, а тестируемый теггер определили этоже слово как сущ 4 раза, то при сравнении должно получится, что в тестфайл на 1 occurrence of computer больше (будет учитываться в знаменателе Precision формулы) |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Perl" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |