新年快到了,分享一下语料预处理的心得,这里只进行了句子级别的简易加工,不对之处欢迎批评指正。
Linux下语料加工流程
1。 从PDF截取txt文件,存储为chapter1(注意去掉文件内的空行)
2。 在每一行尾加一个空格并去Linux换行符,为句子分割作准备
3。进行句子分割
4。 将句子导入MySQL
5。 更新Sphinx索引(如果你用了Sphinx的话)
Linux下语料加工流程
1。 从PDF截取txt文件,存储为chapter1(注意去掉文件内的空行)
2。 在每一行尾加一个空格并去Linux换行符,为句子分割作准备
代码:
sed 's/$/ /g' chapter1 > chapter1_
perl -pe 'chomp' chapter1_ > chapter1_chomped
3。进行句子分割
代码:
#!/usr/bin/perl
#filename: splitsentences.pl
#grammar: perl splitsentences.pl chapter1_chomped > chapter1_sentences
use Lingua::EN::Sentence qw( get_sentences add_acronyms );
add_acronyms('Principles of Marketing','gen');
$/ = "\n";
while(<>) {
$sent = get_sentences($_);
foreach $s (@$sent) {
print "<s> $s </s>\n";
}
}
4。 将句子导入MySQL
代码:
#!/usr/bin/perl
#filename: perldb.pl
#grammar: perl perldb.pl
use DBI;
open(FILE,"chapter1_sentences") or die("cannot open file!");
while (<FILE>){
s/^<s>//g; #消除Lingua::EN::sentence生成的<s></s>对
s#'#''#g; #对单引号转义以便插入MySQL
s#</s>$##g;#消除Lingua::EN::sentence生成的<s></s>对
chomp;
push @sentences,$_;
}
$dsn = "DBI:mysql:database=test;host=localhost";
$dbh = DBI->connect($dsn, 'test', '') or die("mysql is not running!\n");
foreach $sentence (@sentences){
$content= "'" . $sentence . "'";
$rows=$dbh->do("INSERT INTO documents(title,content) VALUES ('KOT99_1', $content)");
}
5。 更新Sphinx索引(如果你用了Sphinx的话)
代码:
./indexer --rotate --all
Last edited: