免费注册 查看新帖 |

ChinaUnix.net

  平台 论坛 博客 文库 频道自动化运维 虚拟化 储存备份 C/C++ PHP MySQL 嵌入式 Linux系统
最近访问板块 发新帖
查看: 1763 | 回复: 5

[文本处理] 求脚本把中文关键字/词相关的句子 从语料库里摘录出来? 已经解决! [复制链接]

论坛徽章:
0
发表于 2018-09-19 15:56 |显示全部楼层
本帖最后由 blackantt 于 2018-09-21 09:37 编辑

1.比如  当前目录下关键字/词文件 key.txt 如下(每行1个中文的字/词)
cat key.txt

中国
一网打尽

2.  当前目录下的txt目录里有多个中文 txt 文件。
--------------------------------------------------------------
            从2中的txt目录下的多个txt文件中,把1中的关键字/词所在的完整句子(2个中文句号之间的句子认为是完整的)摘录出来。并做上标记。最终的文件形式如3

3.最终形成的结果文件 result.txt ,形式如下(最后的句中关键字用括号引起来,取关键字/词前一个句号与后一个句号之间的句子 )
五. 我有[五]个朋友,还有更多女朋友。
五. 他说话一[五]一十。
.....
中国. 我是[中国]人。
中国. 说到[中国],它是个美丽的国家,有十几亿人。
....
一网打尽. [一网打尽]是个成语。
一网打尽. 昨晚,小偷被[一网打尽]了。


   就是从2中的语料库的多个txt文件中,把1中的关键字/词所在的完整句子(2个中文句号之间的句子认为是完整的)摘录出来。并做上标记。最终的文件形式如3。








word.zip

983.38 KB, 下载次数: 13

论坛徽章:
0
发表于 2018-09-19 17:22 |显示全部楼层
bash-4.2$ cat 1

中国
一网打尽
bash-4.2$ cat 2
五. 我有五个朋友,还有更多朋友。
五. 他说话一五一十。
中国. 我是中国人。
中国. 说到中国,它是个美丽的国家,有十几亿人。
一网打尽. 一网打尽是个成语。
一网打尽. 昨晚,小偷被一网打尽了。
bash-4.2$ awk 'NR == FNR {a[$0]++; next} { for (i in a) gsub(i, "["i"]", $0); print}' 1 2
[五]. 我有[五]个朋友,还有更多朋友。
[五]. 他说话一[五]一十。
[中国]. 我是[中国]人。
[中国]. 说到[中国],它是个美丽的国家,有十几亿人。
[一网打尽]. [一网打尽]是个成语。
[一网打尽]. 昨晚,小偷被[一网打尽]了。

论坛徽章:
0
发表于 2018-09-19 18:48 |显示全部楼层
本帖最后由 blackantt 于 2018-09-19 18:50 编辑
csccyab 发表于 2018-09-19 17:22
bash-4.2$ cat 1

中国

   这个实现的是 “从2中的语料库的多个txt文件中,把1中的关键字/词所在的完整句子(2个中文句号之间的句子认为是完整的)摘录出来。并做上标记。最终的文件形式如3。” 吗?
  我用gawk在windows下运行不了。麻烦再帮看下 (如果没有windows下的gawk,在linux下的语句也可以)。你可用附件的word.zip试下

论坛徽章:
28
ChinaUnix元老
日期:2015-02-02 08:55:392017金鸡报晓
日期:2017-01-10 15:13:29CU十四周年纪念徽章
日期:2018-08-29 22:12:2715-16赛季CBA联赛之深圳
日期:2018-09-20 12:21:09
发表于 2018-09-20 12:50 |显示全部楼层
回复 3# blackantt


  1. gawk "NR == FNR {a[$0]++; next} { for (i in a) if ($0~i) {gsub(i, \"[\"i\"]\", $0); print}}" .\word\key.txt .\word\txt\1.txt > result.txt
复制代码

试试这样在你的Windows上能执行吗?得到的结果有什么问题吗?

论坛徽章:
0
发表于 2018-09-20 13:52 |显示全部楼层
$ awk 'NR == FNR {a[$0]++; next} { for (i in a) if ($0~i) {print gensub(i, "["i"]", 2, $0)}}' 1 2
五. 我有[五]个朋友,还有更多朋友。
五. 他说话一[五]一十。
中国. 我是[中国]人。
中国. 说到[中国],它是个美丽的国家,有十几亿人。
一网打尽. [一网打尽]是个成语。
一网打尽. 昨晚,小偷被[一网打尽]了。

论坛徽章:
0
发表于 2018-09-21 09:30 |显示全部楼层
本帖最后由 blackantt 于 2018-09-21 09:37 编辑

谢谢各位

   已经有朋友给用perl解决了。红包已发。只用了一个数据作测试。基本能用就行。

use Cwd;
use Data:umper;
use Encode;
use utf8;
my $dir = getcwd;

my $keyfile = $dir.'/key.txt';
my $targetpath = $dir.'/txt';
my $resultfile = $dir.'/result.txt';
print $keyfile;
open(RD,$keyfile);
my @keys;
while(<RD>{
        my $line = $_;
        $line =~ s/\n//isg;
        $line = decode('utf8',$line);
        push @keys,$line;
}
close RD;
print Dumper @keys;
opendir DIR,${targetpath};
my @filelist = readdir DIR;
shift @filelist;
shift @filelist;
open(WT,">".$resultfile);
shift @keys;
for my $onekey (@keys){
        my $num = 0;
        my $flag = 'no';
        print WT "result of ".$onekey.":\n";
        for my $one (@filelist){
                open(RDD,$targetpath.'\\'.$one);
                $/ = encode('utf8',"。";
                my @lines=<RDD>;
                for my $oneline (@lines){
                        $oneline = decode("utf8", $oneline);
                        my $newline = $oneline;
                                $newline =~ s/$onekey/(*$onekey*)/isg;
                        if ($newline ne $oneline){
                                print WT $onekey,"...",$newline."\n\n";
                                $num++;
                        }
                        if ($num ==20){
                                $flag = 'yes';
                                last;
                        }
                }
                if ($flag eq 'yes'){
                        last;
                }
                print $one;
        }
}


您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

数据风云,十年变迁
DTCC 第十届中国数据库技术大会已启航!

2019年5月8日~5月10日,由IT168旗下ITPUB企业社区平台主办的第十届中国数据库技术大会(DTCC2019),将在北京隆重召开。大会将邀请百余位行业专家,就热点技术话题进行分享,是广大数据领域从业人士的又一次年度盛会和交流平台。与SACC2018类似,本届大会将采用“3+2”模式:3天传统技术演讲+2天深度主题培训。大会不仅提供超100场的主题演讲,还会提供连续2天的深度课程培训,深化数据领域的项目落地实践方案。
DTCC2019,一场值得期待的数据技术盛会,殷切地希望您报名参与!

活动入口>>
  

北京盛拓优讯信息技术有限公司. 版权所有 16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122
中国互联网协会会员  联系我们:huangweiwei@it168.com
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP