2010-09-27 4 views
11

Девять лет назад, когда я начал разбирать HTML и свободный текст с Perl, я читал классику Data Munging with Perl. Кто-нибудь знает, планирует ли Дэвид обновить книгу или есть похожие книги или веб-страницы, где объясняются новые модули синтаксического анализа, такие как XML-Twig, Regexp-Grammars и т. Д.?Какие модули Perl подходят для сбора данных?

Я предполагаю, что в течение последних девяти лет некоторые модули по-прежнему так же хороши, как и раньше, некоторые из них обновлены, но с новыми интересными методами, а некоторые имеют лучшие замены. Например, по-прежнему Parse-RecDescent является единственным вариантом бесплатного синтаксического анализа текста или будет Perl 6 повлиял на Regexp-Grammars его замену во многих сценариях?

Я провел четыре года без активного HTML, XML или интеллектуального анализа данных с помощью Perl, поэтому, вероятно, мой инструментарий в этой области немного устарел. Поэтому любая обратная связь для манипуляций HTML и DOM, извлечения/проверки ссылок, веб-тестирования, таких как Mechanize, XML-манипулирование и бесплатный синтаксический анализ текста, от людей, которые обновлены с нынешними модулями CPAN в этой области, будет более чем приветствуемой.

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

еще в моем инструментарии:

ответ

7

Это вряд ли когда-нибудь появится второе издание «Data Munging with Perl». Боюсь, что экономика просто не складывается.

Но вы правы, что с 2001 года технология прошла долгий путь, и есть много новых и улучшенных модулей, которые охватывают большую часть той же области, что и модули, обсуждаемые в книге. Например, t помню, как в последний раз я использовал XML :: Parser или XML :: DOM. Кажется, я использую XML :: LibXML для большей части моей работы с XML в наши дни. Кроме того, конечно, мое обсуждение баз данных является неполным, поскольку в нем не упоминается DBIx :: Class.

Возможно, было бы интересной идеей обновить часть этой информации через некоторые сообщения на my Perl blog. Я подумаю. Спасибо за идею.

+0

Некоторые из особенностей, возможно, изменились, но понятия совпадают. :) –

+0

Дэйв, было бы приятно прочитать эти обзоры и рецепты в вашем блоге когда-нибудь. –

+0

Да, я бы ОЧЕНЬ заинтересовался чтением этих сообщений. Если вы в конечном итоге размещаете некоторые дополнительные обновления в своем блоге, это будет супер. Ура! – blunders

4

Re: Parse::RecDescent < =>Regexp::Grammars

Damian Conway цитировался о том, что Regexp::Grammarsявляется преемникомParse::RecDescent.Но даже в этом случае, если Parse::RecDescent по-прежнему выполняет задание, вы продолжаете его использовать. Инструмент, который вы хорошо знаете, лучше, чем инструмент, который вы не знаете!

Однако если производительность является ключевой проблемой, и вы используете perl 5.10+, тогда рассмотрите Regexp::Grammars.

Надежда Дэйв не возражает, но вот его первый Parse::RecDescent пример из Munging данных с Perl (11.1.1) преобразуется в Regexp::Grammars:

use 5.010; 
use warnings; 
use Regexp::Grammars; 

my $parser = qr{ 
    <Sentence> 

    <rule: Sentence>  <subject> <verb> <object> 
    <rule: subject>   <noun_phrase> 
    <rule: object>   <noun_phrase> 
    <rule: noun_phrase>  <pronoun> | <proper_noun> | <article> <noun> 

    <token: verb>   wrote | likes | ate 
    <token: article>  a | the | this 
    <token: pronoun>  it | he 
    <token: proper_noun> Perl | Dave | Larry 
    <token: noun>   book | cat 
}xms; 

while (<DATA>) { 
    chomp; 
    print "'$_' is "; 
    print 'NOT ' unless $_ =~ $parser; 
    say 'a valid sentence'; 
} 

__DATA__ 
Larry wrote Perl 
Larry wrote a book 
Dave likes Perl 
Dave likes the book 
Dave wrote this book 
the cat ate the book 
Dave got very angry 

NB. Для тех, у вас нет книги только «Дэйв очень разозлился» является недопустимым предложение :)

/I3az/

+0

noun_phase = noun_phrase? – Mike

+0

@Mike: Его раздражает, вы не можете скопировать/вставить из печатной бумаги сюда :) Хорошо заметили, что я/noun_phase/noun_phrase/' – draegtun

+1

Конечно,« Дэйв очень рассердился »не является допустимым предложением. Дэйв никогда не сердится :-) –

 Смежные вопросы

  • Нет связанных вопросов^_^