Comments 41
Большое спасибо за статью, любопытно и познавательно. Прочитал с огромным удовольствием.
Отличная статья, спасибо!
Спасибо, очень интересно. Вы были единственным разработчиком? И за какой срок сделали?
Иллюстрации замечательные.
В 1999 писал работы для студентов, будучи сам студентом. Основная идея была изначально другая — сканировать книги из местной библиотеки и предоставлять материалы из нее студентам для написания работ. Очень быстро оказалось что, это им не надо, а лучше что-то готовое сразу получить.
Интернет был тогда доступен не всем, до сих пор вспоминаю как приходилось искать информацию, по диалапу, чтобы написать курсовую по предмету который не изучал, по теме, за которую раньше ничего не слышал. (Улыбаюсь)
Длилось все год, дало незабываемый опыт. Писал на визуал бейсик свой поисковик, который искал по архивам с дисков 100500 рефератов похожие темы, и компоновал из них, собирая необходимое в требуемое.
Как правило работы проходили на ура, и были проблемы только тогда, когда студент даже не удосужился прочитать то, что сдает.
Обзор за вашу систему — ситуация с другой стороны, не менее интересно, и потому прочел все, на одном дыхании. Это гениально.
Раскрыли некоторые моменты, по по поиску, и как его можно реализовывать.
Заинтересовал один вопрос по парсингу PDF (нужно в другом русле, для парсинга биллингов). Вы упоминали pstotext. На сколько сложно его использовать? Есть ли рекомендуемые источники для ознакомления. Было бы интересно. Заранее спасибо.
Интернет был тогда доступен не всем, до сих пор вспоминаю как приходилось искать информацию, по диалапу, чтобы написать курсовую по предмету который не изучал, по теме, за которую раньше ничего не слышал. (Улыбаюсь)
Длилось все год, дало незабываемый опыт. Писал на визуал бейсик свой поисковик, который искал по архивам с дисков 100500 рефератов похожие темы, и компоновал из них, собирая необходимое в требуемое.
Как правило работы проходили на ура, и были проблемы только тогда, когда студент даже не удосужился прочитать то, что сдает.
Обзор за вашу систему — ситуация с другой стороны, не менее интересно, и потому прочел все, на одном дыхании. Это гениально.
Раскрыли некоторые моменты, по по поиску, и как его можно реализовывать.
Заинтересовал один вопрос по парсингу PDF (нужно в другом русле, для парсинга биллингов). Вы упоминали pstotext. На сколько сложно его использовать? Есть ли рекомендуемые источники для ознакомления. Было бы интересно. Заранее спасибо.
Для pdf насколько мне известно есть два ключевых варианта работы ghostscript и poppler и множество оберток вокруг оных. pstotext — одна из оберток и чаcть пакета ghostscript.
Пользоваться не сложно — правильно комбинируете параметры ввода и получаете текст. Есть сложность — pdf может не содержать текста (например если он отсканирован) — тогда потребуется распознавание, что уже несколько иная задача.
Пользоваться не сложно — правильно комбинируете параметры ввода и получаете текст. Есть сложность — pdf может не содержать текста (например если он отсканирован) — тогда потребуется распознавание, что уже несколько иная задача.
Очень просто. Вызывать из командной строки — и все.
Низкий поклон за отличную статью. Сразу и несколько интересных ссылок и идеи подкинули как к некоторым задачам подступаться, с которыми доводилось сталкиваться в прошлом, но им не суждено было быть сделанными. Огромное спасибо!
Две ваши статьи прочитал на одном дыхании! Мне, как очень начинающему back-end разработчику было очень интересно прочитать, как делаются вот такие больше проекты, которые даже в голове не укладываются.
А вы не думали переписать нагруженные части на чем-нибудь более производительном?
Надеюсь, что пост не затеряется среди «30 строк» и «мы купили бутер за bitcoin!».
А вы не думали переписать нагруженные части на чем-нибудь более производительном?
Надеюсь, что пост не затеряется среди «30 строк» и «мы купили бутер за bitcoin!».
Я подумывал переписать некоторые куски на С, но потом решил, что это бессмысленно. Чисто вычислительные куски постоянно перемежаются с манипуляцией строками, в которых С совсем не силен.
Да и практически там все равно использовался PDL, который написан на чистом С. Получалась та же самая структура — Перл вызывает вычислительный код на С.
После некоторых экспериментов я бы скорее смотрел, как это ни странно, в сторону NodeJS. Операции с большими массивами там раз в пять быстрее, чем на всех остальных динамических языках (я мерял Перл, Питон, ПХП, Эрланг и еще кучу всякой экзотики вроде Ребола и Лиспа)
Да и практически там все равно использовался PDL, который написан на чистом С. Получалась та же самая структура — Перл вызывает вычислительный код на С.
После некоторых экспериментов я бы скорее смотрел, как это ни странно, в сторону NodeJS. Операции с большими массивами там раз в пять быстрее, чем на всех остальных динамических языках (я мерял Перл, Питон, ПХП, Эрланг и еще кучу всякой экзотики вроде Ребола и Лиспа)
А можно каких-нибудь ссылок по разбитию английского текста на предложения?
У Мэннинга на эту тему есть целая глава.
Дэн Гиллик здесь: code.google.com/p/splitta/
Явовская библиотека вот: opennlp.apache.org/
Питоновский пакет: nltk.org/
В гугле можно искать по фразам «sentence boundary detection» или «sentence segmentation». Судя по количеству, любимая тема — и не очень сложно, и чег-нибудь выдумать можно.
Дэн Гиллик здесь: code.google.com/p/splitta/
Явовская библиотека вот: opennlp.apache.org/
Питоновский пакет: nltk.org/
В гугле можно искать по фразам «sentence boundary detection» или «sentence segmentation». Судя по количеству, любимая тема — и не очень сложно, и чег-нибудь выдумать можно.
А сегодня вы такую систему на чем бы делали? Неужели тоже на перле?
А почему бы и нет? Какие минусы вы видите?
Сопровождение, доработку. Как из-за самого языка, так и из-за отсутствия специалистов.
Боюсь, что даже 50 специалистов по «пэхепе» такую систему не родят, и количество не перейдет в качество.
Что же касается языка, то на нем надо аккуратно писать, тогда и сопровождение будет несложным. В частности, разбиение на отдельные службы, связанные конвейером, сократив сложность, упростило сопровождение и доработку.
Что же касается языка, то на нем надо аккуратно писать, тогда и сопровождение будет несложным. В частности, разбиение на отдельные службы, связанные конвейером, сократив сложность, упростило сопровождение и доработку.
Конечно. Отличный язык, вытягивающий сложные задачи. Верблюда там не зря эмблемой избрали.
Питон мог бы быть вариантом, учитывая уже готовый NLTK.
Питон мог бы быть вариантом, учитывая уже готовый NLTK.
Спасибо! Невероятно интересно.
конец о малолетках, конечно, подпортил впечатление.
а вообще — очень серьёзная разработка, и очень хорошее описание.
конец о малолетках, конечно, подпортил впечатление.
а вообще — очень серьёзная разработка, и очень хорошее описание.
Ха… Спасибо! Очень интересный и мотивирующий рассказ/ Хочется сделать свой велосипед.
НО извините за нескромный вопрос — Вы действительно не работаете по субботам?
НО извините за нескромный вопрос — Вы действительно не работаете по субботам?
спасибо за статью
Отличная работа, коллега!
По Вашему условию пример нашего проекта в этой области.
А по поводу Вашего алгоритма одно предложение: Вы используете тф*идф для предложений, тогда, может, стоит применить его для оценки слов документа, чтобы выкинуть совсем незначащие. Таким образом можно сократить количество шинглов. Также можно оптимизировать количество запросов к поисковикам, запрашивая в первую очередь наиболее значимые шинглы.
По Вашему условию пример нашего проекта в этой области.
А по поводу Вашего алгоритма одно предложение: Вы используете тф*идф для предложений, тогда, может, стоит применить его для оценки слов документа, чтобы выкинуть совсем незначащие. Таким образом можно сократить количество шинглов. Также можно оптимизировать количество запросов к поисковикам, запрашивая в первую очередь наиболее значимые шинглы.
Добрый день,
Ох уже эти велосипеды. Помнится мне как то пришлось работать над схожей задачей, для ловли плагиаторов для одного фр вуза который во всю продвигал дистанционные формы обучения и как следствие электронный документооборот. Так вот вместо того что бы что то изобретать мы обратились за помощью к фундаментальной науке. Нам повезло, нам на глаза попали результаты использования SCAM (Standard
Copy Analysis Mechanism). Что на практике с применением lucene дало неплохие результаты. По аглицки данная отрасль называется Plagiarism Detection.
Ох уже эти велосипеды. Помнится мне как то пришлось работать над схожей задачей, для ловли плагиаторов для одного фр вуза который во всю продвигал дистанционные формы обучения и как следствие электронный документооборот. Так вот вместо того что бы что то изобретать мы обратились за помощью к фундаментальной науке. Нам повезло, нам на глаза попали результаты использования SCAM (Standard
Copy Analysis Mechanism). Что на практике с применением lucene дало неплохие результаты. По аглицки данная отрасль называется Plagiarism Detection.
Очень интересная и грамотная статья!
один момент только заметил на поправку:
Вроде бы я ничего не путаю — кажется косинус угла считается через скалярное произведение векторов, а не векторное.
один момент только заметил на поправку:
и считаем косинус угла между ними (через векторное произведение)
Вроде бы я ничего не путаю — кажется косинус угла считается через скалярное произведение векторов, а не векторное.
Отлично. Спасибо.
Тоже немного приходилось работать с натуральными языками, но более поверхностно.
Например, для разбивки на предложения написал простую стейт-машину
Для морфологии взял pymorphy. Но согласен — тема сложная. А если пытаться учитывать ошибки и опечатки…
А почему решили завязаться на Amazon? Для очереди я, например, успешно использую RabbitMQ, и т.п. Плюс вы говорите у вас админ был выделенный…
Тоже немного приходилось работать с натуральными языками, но более поверхностно.
Например, для разбивки на предложения написал простую стейт-машину
Скрытый текст
SPACE, DOT, DOT_SPACE, OTHER = range(4)
DOT_SYMBOLS = {u".", u"?", u"!", u"\u2026"}
_STRIP_SYMBOLS = "".join(DOT_SYMBOLS) + " "
def split_to_sentences(text, bad_words=set()):
"""Finite-state machine that split text to sentences.
See tests.sentences for tests and examples"""
state = None
sentence = ""
last_word = ""
for char in text:
if state == DOT_SPACE and char.isupper():
# TODO: check that last word is not "г." "ул." etc.
sentence += last_word
# print last_word, "LAST WORD"
if last_word.strip(_STRIP_SYMBOLS) not in bad_words:
yield sentence
sentence = ""
last_word = char
state = OTHER
elif state in (SPACE, DOT_SPACE) and char == " ":
pass # remove duplicate spaces
elif state in (SPACE, DOT_SPACE) and char not in DOT_SYMBOLS:
# any char, except space, after space -> new word
sentence += last_word
last_word = char
state = OTHER
elif state == DOT and char == " ":
last_word += char
state = DOT_SPACE
elif char in DOT_SYMBOLS:
last_word += char
state = DOT
elif char == " ":
last_word += char
state = SPACE
else:
last_word += char
state = OTHER
# print char, state
if last_word:
sentence += last_word
if sentence:
yield sentence
Для морфологии взял pymorphy. Но согласен — тема сложная. А если пытаться учитывать ошибки и опечатки…
А почему решили завязаться на Amazon? Для очереди я, например, успешно использую RabbitMQ, и т.п. Плюс вы говорите у вас админ был выделенный…
найти все кириллические и греческие буквы, по написанию похожие на соответствующие английские. Хитроумные авторы специально вставляют их в текст, чтобы обмануть проверку на плагиат.
Всегда думал, что так делают для того, чтобы найти свою работу если её «сплагиатили». Оказывается делают и для обратной задачи.
Кстати сказать, самый большой и известный сайт для поиска плагиата называется Turnitin. Это практический монополист в этой области.
Есть антиплагиат разработки одной компании в России.
Статья хорошая, но будьте осторожны. Turnitin и другие компании не только поделили этот рынок, но еще и здорово покрыли его патентами на манер того, как это происходит в индустрии медиакодирования. Из-за этого выйти на него начинающему проекту очень сложно.
Посотрудничайте с www.dissernet.org/
Статья чертовски интересна, спасибо! По поводу научных статей, один из моих уважаемых профессоров говорил, что они пишутся специально запутанным языком, дабы не делиться. Чувствую, в его словах есть смысл.
из чего я делаю вывод, что от сложившейся системы сами авторы мало что получают, а доходы идут кому-то другому
В плане денег за публикацию авторы не получают вообще ничего. Публикация в престижном журнале приносит косвенные дивиденды, ценные в научном мире: цитируемость, индекс Хирша и т. д. Благодаря этому потом можно получать более жирные гранты и позиции в университетах. А непосредственно с продажи статей имеет только издательство. Если автор хочет, чтобы его статья была общедоступна, большинство журналов предоставляют такую возможность, но тогда сам автор должен заплатить немалое бабло за публикацию.
Sign up to leave a comment.
Система поиска плагиата