我有文本文件,我需要从中删除停用词。我有存储在文本文件中的停用词。我将“stop-word”文本文件加载到我的Perl脚本中,并将停用词存储在名为“stops”的数组中。停用词删除并保存新文件
目前我正在加载一组不同的文本文件,我将它们存储在一个单独的数组中,然后进行模式匹配以查看是否有任何单词确实是停用词。 我可以打印停用词并知道哪些文件正在发生,但是如何从文本文件中删除它们并存储新的文本文件,以便它没有停用词?
即停用词: 的 一个 到 和 到
文本文件: “女孩驾驶撞向一个男人”
生成的文件: 女孩驾驶坠毁男子
我将文件加载到:
$dirtoget = "/Users/j/temp/";
opendir(IMD, $dirtoget) || die("Cannot open directory");`
@thefiles = readdir(IMD);`
foreach $f (@thefiles) {
if ($f =~ m/\.txt$/) {
open(FILE, "/Users/j/temp/$f") or die "Cannot open FILE";
while (<FILE>) {
@file = <FILE>;
下面是模式匹配循环:
foreach $word(split) {
foreach $x (@stop) {
if ($x =~ m/\b\Q$word\E\b/) {
$word='';
print $word,"\n";
设置$word
为空。
或者我可以这样做:
$word = '' if exists $stops{$word};
我只是不知道如何设置输出文件不再包含匹配的单词。 将数组中不匹配的单词存储并输出到文件是否很愚蠢?
,将打印所有必须被删除,但我怎么从删除的话原始文件? – jenniem001 2011-03-03 17:21:59
'mv withoutstopwords.txt textfile.txt'。或者将它们保存在一个数组中,然后写出来。 – 2011-03-03 17:28:15