Сделал тут интересную штуку.
Сперва о проблеме: я всегда хотел следить за свежими публикациями в
arXiv-е (
http://arxiv.org), но у меня это никогда не получалось. Я
пробовал подписываться на RSS (
http://arxiv.org/help/rss) и на почтовые
рассылки (
http://arxiv.org/help/subscribe), но стоит только пару
дней пропустить и вот уже список из сотен не просмотренных названий!
На самом деле меня интересуют только статьи по моей тематике, все мне
просматривать особенно незачем. ArXiv предлагает классификацию по
разделам, но мне нужно следить за несколькими - hep-th, math.RT, math.QA
и опять накапливаются залежи. Поэтому я решил попробовать использовать вероятностный обучаемый
классификатор crm114, который был создан для фильтрации спама и достиг в
ней огромных успехов. Сейчас у меня есть прототип, который состоит из программки crmlearn.py
для добавления текста к классу и программки crmfilter.py, которая
выбирает из RSS-потока записи, относящиеся к заданному классу. Я читаю RSS консольной программой snownews, которая запускается в буфере
emacs следующей функцией:
(defun rss ()
(interactive)
(term "/usr/bin/snownews")
(rename-buffer "*RSS*"))
То есть для запуска надо нажать M-x rss. Затем при чтении записи я могу указать, что эта запись является эталоном
для какого-либо класса. Например, следующий текст я классифицировал, как
текст про теорию струн:
"We study N=(n,0) super-Poincare invariant six-dimensional massless and
five-dimensional massive on-shell amplitudes. We demonstrate that in six
dimensions all possible three-point amplitudes involving tensor
multiplets are uniquely determined by super-Poincare invariance and are
necessarily embedded in gravitational theories. For non-gravitational
amplitudes we consider instead five-dimensional massive amplitudes with
N=(2,0) supersymmetry, corresponding to compactifying the theory on a
circle. Super-Poincare invariance and constraints motivated by
four-dimensional S-duality uniquely fix the amplitude as well as the
participating multiplets. The on-shell degrees of freedom are shown to
match those of the massive particle states that arise from self-dual
strings wrapping a circle. Along the way we find interesting hints of a
fermionic symmetry in the (2,0) theory, which accompanies the self-dual
tensor gauge symmetry. We also discuss novel theories with (3,0) and
(4,0) supersymmetry. The three-point amplitudes we find serve as basic
building blocks towards a definition of multiple M5 branes compactified
on M^{4,1}x S^1. " Для этого я использую функцию
(defun crm-learn-buffer () (interactive)
(let ((ss (completing-read "Enter keyword: " (list "Strings" "CFT" "Topology" "Supersymmetry" "General") (lambda (x) 't) nil nil 'my-crm-keywords "General" 't)))
(shell-command-on-region (buffer-end -1) (buffer-end 1) (concat "crmlearn.py " ss))))
(global-set-key "\C-xcrm" 'crm-learn-buffer)
Которая вызывается по нажатию C-x crm
Теперь я могу подписаться на отфильтрованные RSS-потоки, например
добавив в ~/.snownews/urls строчку:
exec:/home/anton/programing/crm/crmfilter.py CFT
http://export.arxiv.org/rss/hep-th||Physics,Science,Work|
Скрипты crmlearn.py и crmfilter.py, а также используемые модули
feedparser и crm.py в приложенном архиве. Crm114 надо поставить
отдельно, благо он есть в репозитории Debian и других дистрибутивов.
Все это должно работать в RSS-читалке Liferea. В принципе, к
crmfilter.py можно прикрутить базовый http-сервер и подписываться
RSS-читалками, которые не умеют работать со скриптами.