Перевод главы 2. Accessing Text Corpora and Lexical Resources

589 views
Skip to first unread message

Kairat Rakhim

unread,
Apr 9, 2012, 12:06:28 PM4/9/12
to nltk-r...@googlegroups.com
Прошу переводчиков второй главы отметиться в этой теме, как просила Алиса:
Как взять перевод главы:  создаете в группе тему "Перевод главы No. Х"
и пишете в теме "Я беру" (если не можете создать тему, напишите мне на
е-мейл) + оставьте краткую информацию о себе: бэкграунд, знание
английского, имелся ли опыт перевода. И каждую неделю отчет.
Предполагается, что скорость 5стр/нед. (это если 1 день работать), так
что отпишите, к какому числу предполагается закончить.
Когда перевод готов, он высылается редактирующему (это должен быть кто-
то из переводчиков), а потом мне  - и я выложу в репозторий.

Dmitry Granovsky

unread,
Apr 9, 2012, 1:34:42 PM4/9/12
to nltk-r...@googlegroups.com
Я взял раздел 2.3 (Reusing Code).

Образование - математическая лингвистика, английский - Cambridge
Certificate in Advanced English. Переводами профессионально не
занимаюсь, но приходилось переводить статьи для конференций.

9 апреля 2012 г. 20:06 пользователь Kairat Rakhim <qaj...@gmail.com> написал:

--
Best regards,
Dmitry V. Granovsky

Alina Petrova

unread,
Apr 9, 2012, 4:13:49 PM4/9/12
to nltk-r...@googlegroups.com
Беру раздел 2.5 WordNet.
Выпускница кафедры мат. лингвистики СПбГУ, TOEFL 112/120. С научными текстами на английском языке работаю постоянно. Также есть опыт работы с WordNet и его русским аналогом. 

2012/4/9 Dmitry Granovsky <dima.gr...@gmail.com>

Olga Pustovalova

unread,
Apr 10, 2012, 5:48:34 AM4/10/12
to nltk-r...@googlegroups.com
Беру раздел 2.2 Conditional Frequency Distributions.

Закончила факультет математики и информатики. Учусь на PhD in Computer Science and Engineering в Италии, рабочий язык - английский. Cambridge Certificate of Proficiency in English. Переводы - не моя специальность, но небольшой опыт есть.

2012/4/9 Alina Petrova <alina.v...@gmail.com>

Daria Churkina

unread,
Apr 10, 2012, 1:27:59 PM4/10/12
to nltk-russian
Перевожу раздел 2.4 Lexical Resources.

Образование филологическое, основной язык - английский. Сейчас не
занимаюсь переводами профессионально, но опыт работы в сфере есть.

Vic N

unread,
Jun 5, 2013, 10:11:39 AM6/5/13
to nltk-r...@googlegroups.com
Ребят, я новичек, начал читать книгу на англ. Но пока нигде не нашел на русском переводов, хотя тут записи год назад сделаны и по логике главы должны быть переведены. Может кто запостить ссылки на переводы?

понедельник, 9 апреля 2012 г., 20:06:28 UTC+4 пользователь Kairat Rakhim написал:

Dmitry Granovsky

unread,
Jun 5, 2013, 3:41:55 PM6/5/13
to nltk-r...@googlegroups.com
Боюсь, что логика тут срабатывает не так :-) Насколько я знаю, сколько-нибудь полных переводов ни одной главы нет.


Пользуясь случаем, ещё раз прошу всех, кто что-либо переводил, объявиться и залить свои переводы на гитхаб.


5 июня 2013 г., 18:11 пользователь Vic N <wisej...@gmail.com> написал:
--
You received this message because you are subscribed to the Google Groups "nltk-russian" group.
To unsubscribe from this group and stop receiving emails from it, send an email to nltk-russian...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
 
 

Vic N

unread,
Jun 5, 2013, 5:15:37 PM6/5/13
to nltk-r...@googlegroups.com
Честно говоря, для меня не так важно именно текст книги на русском, почитаю и на английском.
Что же важно, так это то, чтобы сборник примеров, используемых в книге был для русского языка. Я видел в других ветках гуглгрупп обсуждение этого, какой корпус русского языка выбрать для использования в Питоне и т.п. Но единого решения, или общего мнения не встретил, указывались отдельные библиотеки, такие как pymorphy.
Я учу Питон только 3ю неделю, поэтому мне особенно сложно разобраться в хитросплетении библиотек, их версий и лицензий, тем более что на офф. сайте NLTK обновлений не густо, только на Гитхабе.

среда, 5 июня 2013 г., 23:41:55 UTC+4 пользователь Dmitry Granovsky написал:

Mikhail Korobov

unread,
Jun 7, 2013, 9:10:06 AM6/7/13
to nltk-r...@googlegroups.com
Примеров на русском нет, по нескольким причинам. Во-первых, в NLTK нет встроенного русского корпуса (есть opencorpora-tools отдельным пакетом, но это немного не то). Во-вторых, под Python 2.х примеры для русского будут выглядеть довольно коряво в консоли. В третьих, в NLTK нет готовых натренированных моделей для русского языка (а значит, например, задача разбиения текста на предложения остается нерешенной, или POS-tagging, или NER). Дальше, простые CFG плохо справляются с разбором русского, т.к. порядок слов у нас более свободный. Не знаю, как будет работать RegexpParser из 7й главы - для английского мы его в продакшне используем вполне успешно, но я не уверен, что с русским так же просто все выйдет (да и нормального полноценного свободного теггера со снятием неоднозначности для русского вроде нет). Кроме того, для русского вроде нет нормальных открытых-доступных treebank-ов (не знаю, как перевести), а значит сложно статистический парсер натренировать. В NLTK предложения на русском можно разбирать разве что с помощью вручную написанной FeatureGrammar (примерно так же, как там для немецкого в примере), но там сложность в том, что с помощью нее NLTK разбирает предложение целиком, а значит нужно писать грамматику, которая бы разбирала предложение целиком (а не просто выделяла какие-то интересные куски), что сильно сложнее.

Короче говоря, сделать примеры для русского - задача достаточно нетривиальная и, насколько я знаю, нерешенная. Хотя сделать их вполне можно. Я потихоньку думаю в этом направлении, но там еще много работы, а времени у меня сейчас немного.

четверг, 6 июня 2013 г., 3:15:37 UTC+6 пользователь Vic N написал:

Vic N

unread,
Jun 7, 2013, 9:39:24 AM6/7/13
to nltk-r...@googlegroups.com
То, что вы написали довольно печально. Я выбрал Питон из-за синтаксиса и библиотек, NLTK и Networkx, и стал учить. Мне нужно реализовать проект для русского языка, задача: категоризация текстов по признакам, а именно ключевым словам. При этом, нужно численно оценивать вероятность отношения текста к той или иной категории. Я ожидал, что это можно будет сделать с помощью NLTK, но теперь не знаю насколько трудоемко. Думал пропишу список ключевых слов, импортирую тексты и он все сделает дальше.
Правда, если с русским все плохо, то интересует ваше мнение по поводу библиотеки FreeLing 3.0  http://nlp.lsi.upc.edu/freeling/  (http://habrahabr.ru/post/149749/) https://github.com/djinn/freeling-python.
У нее есть "порт" для Питона, и поддержка русского. Можете ли вы сказать, насколько мне ее будет сложно использовать под Питоном? Насколько ее возможности больше, чем NLTK, стоит ли мне заморачиваться с ее изучением, или пробовать на Питоне писать?

пятница, 7 июня 2013 г., 17:10:06 UTC+4 пользователь Mikhail Korobov написал:

Mikhail Korobov

unread,
Jun 7, 2013, 10:26:14 AM6/7/13
to nltk-r...@googlegroups.com
Для категоризации в большинстве случаев не надо как-то сложно разбирать текст, тут библиотеки для работы с языком вряд ли сильно помогут. Ну можете попробовать слова нормализовывать с помощью pymorphy2. Можно еще какую-нибудь кластеризацию Брауна применить (Brown clustering). В любом случае, посмотрите scikit-learn - там очень хорошие и удобные реализации различных алгоритмов машинного обучения. В NLTK классификаторы скорее для учебных целей, "чтоб были", на практике большинство все равно scikit-learn использует (в NLTK к scikit-learn тоже обертка есть, кстати, но проще напрямую). 

Я бы не сказал, что где-то с русским языком лучше - везде непаханное поле :) Есть хорошие закрытые инструменты (например, http://api.yandex.ru/tomita/ ), но в задаче категоризации они вряд ли нужны. 

Вам, по сути, нужно как-то текст в "фичи" перевести. Простейшие униграммы + биграммы + возможно, tf*idf + возможно, нормализация через pymorphy2 или стеммер + какой-нибудь LinearSVC или LogisticRegression уже должны давать хорошую точность, которую сложно будет улучшить (при условии, что данных для тренировки достаточно); остальное - уже от задачи зависит, смотреть на ошибки, разбираться, в чем дело, как можно лучше текст подготовить, по каким еще критериям текст классифицировать можно (чем разные категории друг от друга отличаются), пробовать разные штуки, смотреть постоянно на качество при кросс-валидации. Какие-то еще готовые библиотеки тут вряд ли помогут, большая часть того, что может понадобиться - в scikit-learn и pymorphy2 уже есть, вся "соль" - в правильных "фичах", которые будут зависеть от конкретной задачи.

Если хотите использовать только вручную составленные ключевые слова - можно сделать фичи в духе "keyword1 in text" и засунуть их в како-нибудь классификатор из scikit-learn; т.к. фич будет меньше, чем при автоматическом нахождении ключевых слов, то может оказаться, что более сложные классификаторы вроде RandomForest будет практично использовать, но я не уверен, что работать все будет лучше, чем обычный CountVectorizer + какой-нибудь линейный классификатор (осторожно с оверфиттингом!).

Короче говоря, гляньте вот сюда: http://scikit-learn.org/dev/modules/feature_extraction.html#text-feature-extraction - там и примеры классификации текстов есть достаточно правильные. Ну и вообще, лучше для этой задачи с scikit-learn детально разобраться.


пятница, 7 июня 2013 г., 19:39:24 UTC+6 пользователь Vic N написал:

Vic N

unread,
Jun 8, 2013, 5:08:48 AM6/8/13
to nltk-r...@googlegroups.com
Спасибо за информацию, значит я не ошибся что выбрал Питон, буду все это изучать. Единственно, что scikit-learn не доступен для Питона 3.3, только для 2.7. Но я еще нашел модули для машинного обучения: http://www.shogun-toolbox.org/ http://mlpy.sourceforge.net/   http://www.pybrain.org/pages/features  Вот не знаю что лучше.
Томита парсер выглядит довольно неплохо, но он я так понял реализован на C++.

пятница, 7 июня 2013 г., 18:26:14 UTC+4 пользователь Mikhail Korobov написал:

Mikhail Korobov

unread,
Jun 8, 2013, 7:29:54 AM6/8/13
to nltk-r...@googlegroups.com
scikit-learn с гитхаба прекрасно работает под 3.3. Да и тот, что на pypi, вроде должен. Может, это в ОС просто версия старая? Еще вижу, что бинарник для Windows на pypi под Python 3.3 не выложен, но можно и из исходников поставить. С гитхаба точно работает, короче говоря :) 

Когда PyBrain смотрел, показалось, что он с багами, под 3.х не работает, и медленно все. mlpy - достаточно маргинальная штука, если не нужны какие-то его специфичные фичи, не вижу причин использовать его вместо scikit-learn, который уже как-бы "стандарт". C shogun дела не имел; похоже, комбайн для всех языков сразу, с scikit-learn работать будет точно поудобнее. На чем томита написана - вопрос неважный, т.к. это утилита командной строки с закрытым кодом и достаточно интересной лицензией (можно делать что угодно, втч коммерческие продукты, если не конкурируешь с Яндексом - а у Яндекса столько сервисов, что не понятно, конкурируешь или нет; даже если не конкурируешь сейчас, то не начнешь ли конкурировать потом, когда они что-то новое запустят).

суббота, 8 июня 2013 г., 15:08:48 UTC+6 пользователь Vic N написал:

Vic N

unread,
Jun 8, 2013, 10:40:16 AM6/8/13
to nltk-r...@googlegroups.com
Удалось поставить scikit-learn с большим трудом. Должен заметить, что установка модулей под Питон абсолютно не юзер-френдли. С гитхаба не понятно какую верию скачивать, по умолчанию стоит master версии 0.6, ставил и ее и 0.13.1 - все время выдавало ошибку (и с pip и из сорса) в cmd  error: Unable to find vcvarsall.bat.
По совету http://scikit-learn.org/dev/install.html#building-on-windows  скачал и установил MinGW, но так и не понял, что куда прописать чтоб компилер заработал. С http://sourceforge.net/projects/scikit-learn/files/ тоже скачивал, файл scikit-learn-0.13.1.tar.gz - он тоже не поставился (да и к тому же для меня не очевидно для какой он версии питона - версия не подписана).  В итоге нашел неофициальный репозиторий уже скомпилированных для Windows модулей http://www.lfd.uci.edu/~gohlke/pythonlibs/ и с него установил нормально экзешником - это для новичков будет полезно.

Правда, примеры с сайта выдают ошибки, попробовал пару с кластеризацией текстов. Без ошибки сработал http://scikit-learn.org/dev/auto_examples/decomposition/plot_pca_iris.html что означает, что установка-таки прошла успешно. Я полагаю, что ошибки связаны с синтаксисом, примеры написаны для Питона 2.х, и их немного нужно изменить для версии 3, верно ли это? Подскажите плиз, как мне понять, что именно менять централизованно, без инспектирования кода и вопросов на форумах?



суббота, 8 июня 2013 г., 15:29:54 UTC+4 пользователь Mikhail Korobov написал:

Mikhail Korobov

unread,
Jun 8, 2013, 8:28:14 PM6/8/13
to nltk-r...@googlegroups.com
Менять - операционную систему :) Я, по правде говоря, не знаю как под Windows все это делается, давно дела не имел с ней. Большинство разработчиков библиотек сидят в *nix системах, потому и получается, что под Windows все как-то сложнее выходить может. MinGW тоже та еще радость. В mac/linux после небольшой начальной настройки (компиляторы там почти по умолчанию) создаешь виртуаленв (чтоб в системе не сорить), пишешь pip install scikit-learn (ну или pip install -e git+https://github.com/scikit-learn/scikit-learn.git#egg=scikit-learn, потом пишешь код (правильно), и все работает; никто вручную ничего не скачивает (ну максимум можно гит-репозиторий склонировать, если в разработке поучаствовать хочется), какие-то неофициальные сборки не ищет (незачем). Непитоньи вещи (бывает, зависимости какие-то невключенные в сам пакет) через apt-get/yum/homebrew ставятся. По идее, в Windows после начальной настройки все должно точно так же работать (ну только с поправкой на то, что стандартного менеджера пакетов нет и иногда что-то нужно будет руками скачивать).

В примере с классификацией текстов (http://scikit-learn.org/dev/auto_examples/document_classification_20newsgroups.html#example-document-classification-20newsgroups-py) нужна еще библиотека matplotlib (pip install matplotlib), ну и numpy, а так никаких ошибок быть не должно, там так все написано, что и под 2.х, и под 3.х должно работать. 

scikit-learn-0.13.1.tar.gz - это исходники, они под все версии питона и под все операционные системы (насколько помню, 0.13 уже под 3.х работает, но если нет - то с гитхаба поставить можно).

На вопросы про ошибки без трейсбеков отвечать невозможно. Там в трейсбеке обычно все написано. Про "что менять" не очень вопрос понял; без инспектирования *своего* кода, или скопипасченного кода - никак :) Волшебных пилюль не знаю, внимательность только и дотошность. Без вопросов на форумах - можно гуглить последнюю строчку трейсбека, потом навык их чтения выработается.

"Научный стек" бывает сложнее в установке, чем обычные питоньи пакеты, это да, что есть то есть. Но тут сначала разобраться и окружение настроить, дальше уже проще будет.

суббота, 8 июня 2013 г., 20:40:16 UTC+6 пользователь Vic N написал:

Vic N

unread,
Jun 9, 2013, 4:20:45 AM6/9/13
to nltk-r...@googlegroups.com
Менять Виндовс не охота), как вариант только в виртуальную машину поставить Убунту. Я себе с самого начала поставил Scipy Stack - так что numpy и scipy у меня есть, и обновлял пипом недавно, так что версии последние. С  scikit-learn-0.13.1.tar.gz  вот и не понятно, почему же он не ставился, почему само не тянет зависимости.
Я кажется нашел фундаментально простое решение, как я и думал, и как это сделано для пхп и многих CMS/CMF, для Питона существуют сборки для научных целей с уже подобранными модулями, это WinPython  http://code.google.com/p/winpython/wiki/PackageIndex_33   и Python(x,y)  https://code.google.com/p/pythonxy/wiki/Downloads?tm=2.  Я склоняюсь к WinPython т.к. у него больше модулей, есть менеджер пакетов, есть поддержка Питона 3.3 и при этом входит scikit-learn! 
Скажите, правильно ли я понимаю: сборка оттестирована для Виндовс и не будет у меня таких подводных камней с встроенными модулями? + еще хочу ставить модули, это ведь не вызовет проблем?
Как делал я: по-простому сказал с офф. сайт Питона дистрибутив для Виндовс и потом стал ставить из сорсов модули, для чего были экзешники, ставил их. При этом некоторые модули могли неверно скомпилироваться по Виндовс и это могло привести к проблемам.

воскресенье, 9 июня 2013 г., 4:28:14 UTC+4 пользователь Mikhail Korobov написал:
Reply all
Reply to author
Forward
0 new messages