Xgu.ru теперь в Контакте  — приходите и подключайтесь.
Пока мы работаем над следующими видео, вы можете подключиться в Контакте. Познакомимся и обсудим новые страницы и ролики.

Vk-big.pngYoutube-big.jpeg

new-words

Материал из Xgu.ru

Перейти к: навигация, поиск
Автор: Игорь Чубин
in English: en:new-words (briefly)
Слова из статьи Moscow до обучения программы. Строки с известными словами нужно удалить
Слова из статьи Moscow после обучения программы. Остались слова, которые мы не знаем, или которые не встречались нам раньше. Напротив слова Census стоит пометка, которая была поставлена или сейчас, или раньше
Перевод неизвестного нам слова из статьи. Перевод дополняется списком предложений из статьи, в которых присутствует данное слово. Для получения перевода нужно подойти к слову и нажать K (то есть, shift k)

new-words — скрипт, позволяющий выделить из текста неизвестные читателю слова. Помогает заранее подготовиться к тому, что ждёт его впереди.

Содержание

[править] Небольшое введение в вопрос

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

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

Если заранее, перед тем, как начинать читать текст, просматривать перевод неизвестных слов, которые в нём будут, то шансы понять слово из контекста, вспомнить его перевод и запомнить теперь уже надолго значительно увеличиваются.

Хорошо бы, если бы была программа, которая отслеживает ваш словарный запас. Сначала бы вы её обучали: загружали в неё разные тексты и говорили "вот это слово знаю, это знаю, это тоже знаю", а она всё это запоминала. Чем дальше, тем больше попадалось бы неизвестных слов, и в конце концов, когда программа узнала бы ваш словарный запас достаточно хорошо, она смогла бы довольно точно сообщать, какие сюрпризы ждут вас в новом тексте.

[править] new-words

Программа new-words и есть такая программа (или хочет ею быть!). С её помощью можно отслеживать свой словарный запас, и находить неизвестные слова в тексте до начала его прочтения.

Программа предназначена для работы в консоли. Всю работу по обработке делает она сама, а интерактивную часть возлагает на текстовый редактор, по умолчанию редактор Vim[1].

Процедура инсталляции программы детально описана в разделе Инсталляция ниже. Фактически, в результате инсталляции программа (и вспомогательные скрипты) копируется в каталог ~/bin или /usr/local/bin. При первом запуске создаётся каталог ~/.new-words, в котором хранится рабочая информация программы.

[править] Обучение программы

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

%$ new-words http://en.wikipedia.org/wiki/Moscow

Открывается редактор, в котором находится список слов в порядке убывания их частоты в заданном тексте. Вы должны пройтись и удалить слова (dd), которые вы знаете. После того, как слова будут удалены (обрабатывать весь список не обязательно; работайте с верхней, наиболее важной его частью), вы можете сохранить результаты работы и выйти (:wq).

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

Для того чтобы быстро обучить программу, нужно пройтись по множеству знакомых вам статей. Список известных программе слов можно просмотреть с помощью команды:

$ wc -l /home/igor/.new-words/en.txt 
12815 /home/igor/.new-words/en.txt

Здесь вместо en нужно указать код языка.

Более точную статистику с учётом незначительно отличающихся слов можно посмотреть с помощью new-words -S:

$ ./new-words.sh -S
6872/12261

Первое число это количество известных слов, где несколько похожих слов считаются как одно, а второе — где каждое слово считается по отдельности. Второе число должно быть приблизительно равно тому, что показывает wc, но чуть меньше его, в том случае, если вы удаляли строковые последовательности, которые словами не считаются, но в словарь всё равно попадают. Для просмотра статистики по другим языкам, нужно указать язык одним из принятых способов (например, использовать ключ -l).


Когда обучение программы пройдено (сложно назвать конкретные числа в словаре программы, поскольку это зависит от уровня знания языка; но когда количество незнакомых слов в списке уже значительно, можно считать, что обучение программы выполнено), можно приступать к её обычному использованию.

[править] Использование программы

С технической точки зрения оно ничем не отличается от обучения, главное отличие в том, что вы не просто удаляете известные вам слова, а просматриваете перевод неизвестных и оставляете пометки к ним (подробнее о переводах и пометках ниже).

Слова отсортированы в порядке убывания частоты появления в тексте[2]. Те, которые на самом верху, обязательно стоит посмотреть и разобраться с ними. Вы всё равно натолкнётесь на них и не раз. А те, которые ниже, особенно те, что встречаются только по одному разу (а таких большинство), можно просмотреть бегло и удалить заведомо известные слова, чтобы они не мешали вам в будущем.

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

Если вы читаете текст долго, то имеет смысл просматривать слова не всего текста, а той части, которую вы собираетесь прочитать. Для этого надо использовать ключ -p. Например, вы находитесь на странице 55 и собираетесь прочитать ещё 100; вас интересуют слова только из этой части текста; всего в тексте 528 страниц:

%$ new-words -p 55-155/528 treasure_island.txt

[править] Поддержка разных языков

Для каждого языка, на котором вы читаете тексты, вы можете иметь свой собственный словарный запас и использовать его при чтении.

Язык, на котором написан текст, определяется автоматически по URL (для статей википедии); указывается с помощью ключа командной строки или непосредственно в имени программы.

По умолчанию подразумевается английский язык (en.txt).

Для страниц википедии язык определяется автоматически по URL — языком считается двухбуквенный код между http:// и .wikipedia (коды, содержащие три и более буквы, автоматически не используются; их нужно указывать явным образом).

С помощью ключей командной строки язык можно указать так:

   $ new-words -l de http://de.wikipedia.org/wiki/Moskau

(в примере здесь и ниже язык автоматически был бы определён из URL, но мы явно указываем его с помощью ключа или именем).

Если ключ -l не задан, язык может быть определён из имени программы. Считается, что название языка указывается в имени программы до дефиса:

   язык-words

Например:

   de-words

Для того чтобы этот способ работал, необходимо создать ссылки на программы с именем языка в названии.

(при условии, что вы находитесь в каталоге, где лежит new-words: )

   $ ln new-words de-words -s
   $ ln new-words fr-words -s

Теперь вы можете читать тексты на немецком и французском языках. Например:

   $ de-words http://de.wikipedia.org/wiki/Berlin
   $ fr-words http://fr.wikipedia.org/wiki/Paris

[править] Работа с словосочетаниями

Можно определять частоту вхождения не только слов, но и словосочетаний по два и три слова подряд. Для того чтобы включить поддержку словосочетаний, нужно использовать опции -2, -3 или их комбинацию (поддержка последовательностей из двух слов, из трёх слов или из двух и трёх слов).

   $ new-words -2 treasure_island.txt

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

[править] Тегирование слов и словарные подзапасы

В любом языке есть множество слов, которые имеют не одно, а целый ряд (иногда никак не связанных между собой) значений. Причём часто бывает так, что в определённом произведении из всего множества значений слова автором используется лишь одно. Это постоянно использующееся сейчас значение быстро запоминается, а остальные — нет. Неизвестно, что делать с этим словом: удалять его нельзя из-за остальных его значений, а тянуть постоянно с собой тоже плохо.

Для таких случаев есть возможность тегирования слов.

Обрабатываемый текст можно пометить тегом. Удалённые слова будут считаться известными (и соответственно, скрываться программой) только для текстов, помеченных этим же тегом; в тех же случаях, когда тег другой или его нет вообще, слова будут считаться неизвестными.

   $ cat treasure_island.txt | new-words -t treasure-island

Если вы работаете с текстом, отмеченным тегом treasure-island, слова, удалённые как известные в нём, никак не повлияют на текст, отмеченный, например, тегом great-expectations. И наоборот — слова, удалённые при работе с текстом с текстом тегированным great-expectations никак не повлияют на слова treasure-island.

Можно сказать, что для заданного тега создаётся свой подзапас слов, который дополняет основной запас.

Накопленные таким образом подзапасы слов можно переносить в основной запас. Например, обработать слова подзапаса treasure-island:

   $ new-words -m treasure-island

Слова подзапаса tresure-island открываются для просмотра. Те из них, которые вы считаете уже выученными, нужно удалить. Они попадают в основной словарный запас.

Когда все слова из подзапаса будут перенесены его можно совсем удалить вообще:

   $ new-words -r treasure-island

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

Просмотреть список подзапасов и соответствующих им тегов можно так:

   $ new-words -T

Ключи для работы с тегами:

-t tag
удалённые слова попадают в подзапас tag
-T
показать список активных подзапасов для языка
-m tag
перенести выбранные слова из подзапаса tag в общий
-M
перенести выбранные слова из всех подзапасов в общий
-r tag
стереть заданный подзапас

[править] Просмотр слов в словаре

Результат работы программы загружается в редактор (по умолчанию, редактор vim, но вообще может использоваться любой редактор, который вы укажете в EDITOR).

Вы проходите по списку и просто удаляете те слова, которые вы знаете. Слова, которые вы не знаете, можно посмотреть в словаре.

Icon-caution.gif

Это будет работать только для редактора vim. Если вы используете какой-то другой редактор, в том числе vi, использовать описываемую здесь возможность не получится

Для этого нужно подойти курсором к соответствующему слову и нажать shift-k (K). Будет запущенна программа

   язык слово

Например, если вы читаете статью на английском языке и подошли к слову "gumption", после чего нажали K, то будет вызвана программа:

   en gumption

Подключить ваш любимый переводчик можно, создав файлы с названием языков в каталоге ~/bin (или другом каталоге исполняемых файлов). В самом простейшем случае слово можно просто посмотреть в браузере, тогда для Linux скрипт ~/bin/en будет выглядеть так:

   #!/bin/sh
   iceweasel "http://www.babylon.com/definition/$1/Russian"

Или для Mac OS X немного иначе:

   #!/bin/sh
   open -a /Applications/Firefox http://www.babylon.com/definition/$1/Russian

В более сложном — скрипт может брать информацию с сайта сам и выводить её прямо в консоли (см. например, скрипт lingvo-en-ru.pl; Andrii Grytsenko, 2010).

После того как команда выполнена, надо будет нажать "Enter" для возвращения в редактор.

[править] stardict

В командной строке можно использовать программу stardict (sdcv) или подобную.

Пример польско-русского словаря, файл ~/bin/pl

#!/bin/sh

sdcv -n -u slovnyk_pl-ru "$@"

Словарная база должна быть предварительно загружена с сайта startdict и добавлена в каталог /usr/share/stardict/dic/ (для Debian):

$ ls /usr/share/stardict/dic/
stardict-dictd_www.mova.org_slovnyk_pl-ru-2.4.2
stardict-dictd_www.mova.org_slovnyk_pl-ru-2.4.2.tar.bz2

Список доступных словарей просматривается командой:

$ sdcv -l
Dictionary's name   Word count
slovnyk_pl-ru    12793
French - English    7830
German - English    81628
Longman Dictionary of Contemporary English    43052

Подборка словарей для использования со stardict:

Для конвертации в формат stardict можно использовать программу makedict.

[править] dict

Если компьютер, на котором вы используете программу, подключен к Интернету, вы можете использовать программу dict и dictd-серверы в Интернете.

Одна из наиболее полных коллекций русскоязычных словарей (хотя там есть не только они) представлена на сервере dictd.xdsl.by . Для того, чтобы запрашивать слова у dictd-сервера, нужно установить программу dict и использовать её.

Пример использования:

$ dict -h dictd.xdsl.by -d mueller24 sound

(просмотреть перевод слова sound в словаре mueller24 на сервере dictd.xdsl.by; посмотреть список доступных словарей на сервере можно командой: dict -D -h dictd.xdsl.by ).

[править] Поиск слов в тексте

Слова не всегда нужно смотреть в словаре. Иногда их можно понять из контекста. Более того, не исключено, что так делать лучше: когда вы догадались, что значит слово, сами, оно запомнится намного лучше и надольше, чем если вы посмотрели его значение в словаре.

Иногда вы можете не понять слово сразу, например, потому что информации из окружающего контекста маловато, или в предложении несколько неизвестных слов. Тогда вы откладываете уравнение с этими неизвестными до того момента, пока это слово не встретится вновь, и не образует другое уравнение, с новыми неизвестными. В конечном счёте, количество уравнений становится достаточным, чтобы найти решение, и вас осеняет!

Можно совместить эти два способа поиска значения слов: при просмотре перевода слова дополнять перевод предложениями из текста, в которых встречается данное слово. Для этого немного нужно изменить программу-перевода слов (en, de и т.д.).

Просмотр значения слова происходит как обычно:

  • вы анализируете неизвестные слова,
  • подходите к очередному,
  • нажимаете K (shift k) и получаете перевод этого слова и предложения, где оно встречается.

Например, при анализе текста http://en.wikipedia.org/wiki/Mars вам встретилось слово crust. Вы подходите к нему и нажимаете K:

From Mueller English-Russian Dictionary [mueller24]:

  crust
     1. _n.
        1: корка (хлеба); _перен. средства к существованию; to earn one's
        crust - зарабатывать на кусок хлеба
        2: твердый поверхностный слой, корка; корка на ране; затвердевший
        слой снега
        3: осадок (вина на стенках бутылки)
        4: _геол. земная кора; поверхностные отложения
        5: _метал. настыль
        6: _собир. угрюмый, раздражительный человек
        7: _собир. дерзость, наглость, нахальство
     2. _v.
        1: покрывать(ся) корой, коркой (тж. crust over) The ground was
        crusted over with snow.
        2: давать осадок (о вине)
  
. . . . . . . . . . . . . . . . . . . . . . . . .

^^ Although Mars has no evidence of a current structured global magnetic field,^ observations show that parts of the planet's crust have been magnetized and that alternating polarity reversals of its dipole field have occurred in the past.

The average thickness of the planet's crust is about 50 km, with a maximum thickness of 125 km.

^ Earth's crust, averaging 40 km, is only a third as thick as Mars’ crust relative to the sizes of the two planets.

Valles Marineris was formed due to the swelling of the Tharsis area which caused the crust in the area of Valles Marineris to collapse.

Для того, чтобы этот способ работал, нужно использовать скрипт en (или другого языка) вида (в репозитории этот пример известен как en.sh):

#!/bin/sh

DICTD_SERVER=dictd.xdsl.by
DICT_NAME=mueller24


myname="`echo $0 | sed s@.*/@@`"
case $myname in
  "de") DICT_NAME=de-ru ;;
  "pl") DICT_NAME=slovnyk_pl-ru ;;
  "ru") DICT_NAME=ozhshv ;;
esac

(
    dict -h "$DICTD_SERVER" -d "$DICT_NAME" "$@"
    if [ -e "$ORIGINAL_TEXT" ]
    then
        echo . . . . . . . . . . . . . . . . . . . . . . . . . ; echo
        grep-sentences "$*" "$ORIGINAL_TEXT"
    fi
) | less -p "$*"

Скрипт этот можно сделать доступным под именами en, de, pl, ru с помощью символических ссылок. По имени, использующемуся при вызове, он будет определять, какой словарь использовать.

Если его вызывать не из new-words, он вызывает только dict и всё; если же его вызывать из new-words, то он будет показывать и предложения, содержащие указанные слова.

[править] Добавление пометок к слову

Слова, которые вы не знаете очень хорошо, лучше не удалять. Пусть попадаются на глаза — лучше запомнятся.

К каждому слову, которое вы видите в списке обнаруженных неизвестных слов, можно добавить какую-либо пометку. Перевод или что-то, что поможет вам его вспомнить.

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

Для того чтобы добавить пометку, нужно просто подойти к слову и справа от него дописать её.

Все пометки запоминаются в файле ~/.new-words/notes-LANG.txt, где вместо LANG будет стоять код языка, которому принадлежит слово. Например, для английского это будет файл ~/.new-words/notes-en.txt. Файл имеет простой текстовый формат, поэтому может быть использован в сочетании с такими утилитами как cat, grep и tail.

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

Если слово попадалось вам на глаза (то есть, встречалось в обрабатываемом тексте среди неизвестных слов), оно переносится в конец файла пометок. Таким образом, посмотреть слова, с которыми мы работали в последнее время, можно с помощью команды tail:

$ tail ~/.new-words/notes-en.txt 
furthermore                   к тому же, кроме того, более того
uptake                        понимание
isthmus                       перешеек, соединительное место
estimated                     предположительное; прикинутое
Strait                        пролив
glaciers                      ледники; глетчеры
Treaty                        договор; переговоры; договорный
outflow                       истечение; выход; утечка ;;; истекать
indigenous                    туземный, местный; природный, врождённый
precipitation                 низвержение; стремительное ускорение; осадок; осадки

Чем чаще вам в текстах, которые вы читаете, попадается слово на глаза, тем ближе оно будет к концу файла пометок.

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

Можно сказать, что для каждого языка его слова распределены по кэш-иерархии:

            мозг              ^
          пометки             |
      слова в словаре         |
  хитрые слова в интернете    |
совсем хитрые слова в архивах
  • Слова, которые людьми используются чаще, находятся на уровне иерархии выше.
  • Слова, которые используются не просто людьми, а вами, находятся ещё выше.
  • Слова, которые используются вами чаще всего, находятся у вас в мозгу.

Задача заключается в том, чтобы двигать слова выше и выше по иерархии вверх. Но слова, если с этим ничего не делать, сами сползают вниз.

[править] Обработка файлов, потоков и web-страниц

Программа может обрабатывать файлы, потоки и web-страницы.

Для обработки файлов:

   new-words /path/to/file

Для обработки потоков:

   ...| new-words

Например:

   man bash | new-words

Для обработки web-страниц:

   new-words http://....

Например:

   new-words http://design.caltech.edu/Misc/pirsig.html

[править] Сводка о неизвестных словах

Вверху файла с неизвестными словами в тексте находится строка-комментарий, которая содержит информацию о:

  • языке обрабатываемого файла;
  • проценте известных слов в файле;
  • количестве известных и всех слов в файле.

Например:

# en, 83.2, <61815/74266>

Можно просто просмотреть информацию о неизвестных словах в тексте и не работать с самими словами[3]. Для этого нужно использовать ключ -s:

$ new-words -s ../Great_Expectations/pg1400.txt 
LANG  KNOWN%  UNKNOWN%  KNOWN     TOTAL     WPS  UWPS*10
en    89.8    10.2      167021    185840    21   21

Здесь:

  • LANG — язык файла;
  • KNOWN% — процент известных слов в файле;
  • UNKNOWN% — процент неизвестных слов в файле;
  • KNOWN — количество известных слов в файле;
  • UNKNOWN — количество неизвестных слов в файле;
  • TOTAL — количество слов в файле всего;
  • WPS — среднее количество слов в предложении;
  • UWPS — среднее количество неизвестных слов в предложении (умноженное на 10).

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

%$ for i in *.txt; do echo `new-words -s $i | tail -1` $i ; done | sort -k1 -n
en 67.4 32.6 13072 19388 a_midsummer_nights_dream.txt
en 68.0 32.0 21390 31427 hamlet.txt
en 74.6 25.4 21624 28972 othello.txt
en 75.6 24.4 197558 261245 ulysses.txt
en 81.1 18.9 28091 34606 the_call_of_the_wild.txt
en 81.5 18.5 111045 136214 the_da_vinci_code.txt
en 83.7 16.3 93586 111710 heart_of_three.txt
en 85.9 14.1 30061 34962 the_time_machine.txt
en 86.0 14.0 60684 70496 treasure_island.txt
en 87.4 12.6 92503 105750 the_adventures_of_sherlock_holmes.txt
en 87.7 12.3 149865 170871 for_whom_the_bell_tolls.txt
en 89.8 10.2 213220 237412 robinson_crusoe.txt
en 89.8 10.2 63357 70521 the_catcher_in_the_rye.txt
en 90.5 9.5 23554 26019 the_old_man_and_the_sea.txt

Разброс доли известных слов оказался довольно большим: от ~68% для Сна в летнюю ночь и Гамлета Шекспира, до >90% для Старика и моря Хэмингуэя.

Здесь ни один из текстов не обрабатывался раньше с помощью new-words, поэтому они все находятся в равных условиях. Когда вы начинаете работать с текстом, в частности, удаляете имена собственные, процент заметно изменяется.

Важно помнить, что анализ основывается исключительно на вашем собственном словарном запасе, причём в том виде, в каком он известен new-words. Для того чтобы результаты были более адекватными, программа должна знать ваш словарный запас лучше. Показанные выше результаты найдены для словаря new-words около 10 тысяч слов.

Icon-caution.gif

Процент известных слов в общем случае не означает уровень простоты текста: может быть так, что известны все слова по отдельности, но при этом весь текст в целом понять не удаётся; так и наоборот — процент неизвестных слов может быть высоким, но совершенно ясно о чём идёт речь.

[править] Перевод слов

...

Для того чтобы сжать список неизвестных слов — оставить только одно, основное, слово в группе — нужно использовать ключ -c.

[править] Изучение и запоминание слов

[править] Встроенная программа для повторений

Повторить слова и попытаться вспомнить их перевод, можно с помощью скрипта learn-words.sh (написан на bash, не на /bin/sh; обратите внимание). Этот скрипт спрашивает вас слова из последних N слов (по умолчанию N равно 50).

  • После того, как вы посмотрите на слово и попытаетесь вспомнить его перевод,

вы должны нажать Enter — скрипт покажет вам вашу пометку.

  • Ещё раз нажать Enter — скрипт перейдёт к следующему слову.
  • Завершение работы — ctrl-c.
  • Переключение на реверсивный режим (сначала пометки, потом слова) — ключ -r.
Usage:
    $0 [ -l LANG ] [ -r ] [ N ]

    Help to learn N (number) previously marked words from LANG language.

Options:
    -r  reversed mode (show the note first; the word second)

Скрипт рассчитан на самоконтроль и сам никакого контроля и записи хода тренировки не выполняет.

[править] Anki и Mnemosyne

Существует несколько программ, основанных на методе интервального повторения (spaced repition). Идея заключается в том, чтобы повторять слова, которые вы хорошо знаете, реже, а которые плохо знаете -- чаще, но не слишком часто, потому что слишком частое, как и слишком редкое повторение, снижает эффективность запоминания.

Слова в тексте можно условно разделить на три группы:

  1. Слова, которые мы знаем хорошо (можно удалять);
  2. Слова, которые мы знаем плохо или не знаем, но хотим выучить;
  3. Слова, которые мы не знаем и пока учить не хотим (например, потому что они встречаются в книге только один раз).
*****************  + эти слова мы знаем
**********         +
*****              | эти хотим выучить
**                 |
**                 |
*                  - эти не знаем и пока не хотим
*                  -
*                  -
*                  -
*                  -

Со словами первой и третьей группы всё ясно -- их нужно удалить или пропустить, соответственно. Что касается слов второй группы -- слов, которые мы не знаем, но выучить хотим -- с ними не всё так просто. Удалить их жалко, а если их оставлять, они мешают находить новые неизвестные слова.

Для того чтобы их удалить, нужно их выучить, или хотя бы сохранить в каком-то особом месте.

Один из вариантов работы с ними -- использование программ интервального повторения, таких как Anki и Mnemosyne. Вы сохраняете слова в отдельном файле и создаёте на их основе, например, словарь Anki. Теперь это её забота, чтобы вы выучили эти слова.

Словари Anki можно называть по названиям книг, из которых эти слова взяты.

Как удобно выносить неизвестные слова в Анки? Можно отмечать слова, которые вы хотите вынести когда-то в Anki символом |, а слова, которые вы уже вынесли, символом ^. Тогда получить список всех слов, которые нужно вынести, очень просто. Для этого нужно в редакторе набрать:

g/|/p

Вы получите список таких слов.

:g/|/p
     94 crop                  | урожай, жатва, сельхоз культура, обилие, масса, дублёная шкура; собирать урожай, давать урожай, подрезать на корню
      6 germ                  | зародыш, эмбрион, микроб, зачаток, завязь
     63 conquest              | завоевание, покорение
     22 conquer               | завоёвывать, покорять
     68 diffusion             | распространение, многословие, диффузия
     56 livestock             | живой инвентарь, домашний скот
     20 yield                 | урожай, размер выработки // производить, приносить, сдавать, сдаваться
     15 cereal                | хлебный злак, каша; хлебный, зерновой
     33 dense                 | плотный, густой, компактный, непрозрачныйё
     56 pottery               | гончарные изделия, мастерская, дело
      3 confine               | ограничивать, заключать в тюрьму, заточать

Вы получите их в специальный буфер vim. Если вы хотите записать их в отдельный файл (а вообще-то нам нужно именно это), то перед вызовом команды нужно дать:

:redir > /tmp/anki-guns-germs-steel.txt

После, то есть, для того чтобы отключить перенаправление redir END.

:redir > /tmp/anki-guns-germs-steel.txt
:g/|/p
:redir END

Если вы вынесли все слова, то можете отметить это заменой символа:

: %s/|/^/

Если не все, то включите интерактивность в замене:

: %s/|/^/c

Обратное действие, то есть получение файла слов с переводом на основе существующего файла anki, выполняется так:

% sqlite3 ~/.anki/decks/verbs2.anki 'select question,answer from cards order by interval;' \
| perl -n -e 's/<[^>]*>//g; ($a,$b)=split /\|/; print $a,(" "x(30-length($a))),"|",$b;'

Слова в итоговой таблице получаются отсортированными в том порядке, в каком их будет спрашивать Anki (которые будет спрашивать в ближайшее время — наверху).

[править] Визуальное представление слов

Иногда лучше один раз увидеть, чем сто раз услышать, а точнее, в нашем случае, прочитать.

Для того чтобы просмотреть, как выглядит то, что обозначает слово, можно воспользоваться Google Images или другой аналогичной службой.

С помощью простого скрипта можно автоматизировать поиск картинок. Например, пусть у вас есть файл со словами (по одному на строку), изображения для которых вы хотели бы получить.

Вы открываете браузер (в нашем случае firefox, но вообще, это может быть какой угодно браузер с учётом того, что нужно будет подправить аргументы командной строки при вызове). В соседнем окне запускаете скрипт:

$ google-images my-words

Для каждого слова откроется вкладка с соответствующими картинками.

Icon-caution.gif

Google не хочет обслуживать роботов. Роботов он отличает по тому, что они быстрые и не устают. Поэтому если вы не хотите доказывать, что вы не робот, лучше не использовать большие списки и не уменьшать время ожидания между запросами слишком сильно (параметр SLEEP).

$ cat ~/bin/google-images 
FIREFOX=firefox
GOOGLE=images.google.com
SLEEP=5

if [ -z "$1" ]
then
  echo Usage: $0 file-with-words > /dev/stderr
  exit 1
else
  cat "$1" | while read word
  do
      url="http://${GOOGLE}/images?q=$word"
      ${FIREFOX} -new-tab "$url"
      # For Mac OS X:
      # open -a Firefox.app "$url"
      sleep ${SLEEP}
  done
fi

Как лучше использовать этот метод?

  • подготовить слова, которые вы плохо знаете, но хотели бы выучить; список не должен быть очень большим, до 50 слов; желательно чтобы в списке не было служебных или слишком абстрактных слов;
  • просмотреть перевод каждого слов, попытаться его запомнить; при запоминании каждого слова пытаться представить, как это должно выглядеть, какую картинку показали бы вы на месте Google;
  • просмотреть список слов без переводов, попытаться вспомнить перевод и картинку;
  • запустить скрипт и посмотреть, как себе это представляет Google;
  • пройти ещё раз по очереди все вкладки браузера, попытаться вспомнить, какому слову соответствует картинка.

[править] Инсталляция

Что должно быть в системе:

  • perl
  • bc
  • lynx
  • vim

[править] Из архива

Программа находится по адресу: http://xgu.ru/downloads/new-words.tar.gz

Скачать и установить:

   wget http://xgu.ru/downloads/new-words.tar.gz
   tar xvfz new-words.tar.gz
   cd new-words/
   sh INSTALL.sh

Программа будет проинсталлирована в каталог ~/bin/ .

Или, если программа нужна нескольким пользователям:

   sudo sh INSTALL.sh

Программа будет проинсталлирована в каталог /usr/local/bin/ .

Note-icon.gif

Если вы хотите использовать внешний словарь, например, sdcv или dict, не забудьте его проинсталлировать отдельно. По умолчанию new-words использует dict.

[править] Из репозитория mercurial

Mercurial-logo.png

Репозиторий проекта
http://xgu.ru/hg/new-words

Текущая версия программы находится в репозитории mercurial.

Если mercurial у вас не установлен, установите его принятым в операционной системе способом:

   apt-get install mercurial

Получить репозиторий и установить программу из него:

   hg clone http://xgu.ru/hg/new-words
   cd new-words
   mkdir -p ~/bin/
   cp new-words.sh ~/bin/new-words
   cp en.sh ~/bin/en
   cp grep-sentences.pl ~/bin/grep-sentences
   chmod +x ~/bin/new-words ~/bin/grep-sentences ~/bin/en

[править] Улучшение программы

  • Автоматическое определение языка по ранее проведённому обучению
  • Ускорить работу программы, особенно для больших словарных запасов

(полный список возможных улучшений смотрите в файле README в репозитории проекта)

[править] Лицензия

GPLv3

[править] Материалы по работе с иностранными языками на Xgu.ru

[править] Примечания

  1. Тех, кто не знает ещё пока редактора Vim, пусть это не смущает. Из всех возможностей редактора нам понадобится всего лишь несколько:
    •  :wq — сохранить и выйти;
    •  :q! — выйти без сохранения;
    • dd — удалить строку;
    • shift v — перейти в визуальный режим; в нём мы выделяем строки, которые хотим удалить, а потом нажимаем d;
    • d — удалить выделенный блок;
    • A — перевести курсор в конец строки и перейти в режим вставки; понадобится нам, когда мы будем добавлять к словам пометки.
  2. После изменения [1] (доступно в версиях >0.1) для английского языка слова сортируются более хитро: выполняется группировка похожих слов и сортировка выполнятся для групп, исходя, из количества слов в группе (в пределах группы сортировка выполняется как обычно). Это позволяет обрабатывать несколько близких слов одним махом.
  3. Для версий позже 0.1
Источник — «http://www.871460.xgu.ru/wiki/new-words»