我有一些.sgm格式的文件,我必须对它们进行评估(应用语言模型并获得文本的困惑)。
主要问题是我需要这些文件采用普通格式,即采用txt格式。但是我一直在互联网上搜索一个在线转换或者某些脚本执行此操作但找不到。
除此之外,我的老师用perl发给我这个命令:
perl -n 'print $1."\n" if /<seg[^>]+>\s*(.*\S)\s*<.seg>/i;’ < file.sgm > file
我从未使用过perl,老实说,不知道它。我想我已经安装了perl:
$ perl -v
This is perl 5, version 18, subversion 2 (v5.18.2) built for darwin-thread-multi-2level
(with 2 registered patches, see perl -V for more detail)
Copyright 1987-2013, Larry Wall
Perl may be copied only under the terms of either the Artistic License or the
GNU General Public License, which may be found in the Perl 5 source kit.
Complete documentation for Perl, including FAQ lists, should be found on
this system using "man perl" or "perldoc perl". If you have access to the
Internet, point your browser at http://www.perl.org/, the Perl Home Page.
顺便说一句,我使用的是Mac OS X.
示例.sgm文件:
<srcset setid="newsdiscusstest2015" srclang="any">
<doc sysid="ref" docid="39-Guardian" genre="newsdiscuss" origlang="en">
<p>
<seg id="1">This is perfectly illustrated by the UKIP numbties banning people with HIV.</seg>
<seg id="2">You mean Nigel Farage saying the NHS should not be used to pay for people coming to the UK as health tourists, and saying yes when the interviewer specifically asked if, with the aforementioned in mind, people with HIV were included in not being welcome.</seg>
<seg id="3">You raise a straw man and then knock it down with thinly veiled homophobia.</seg>
Otuput .txt文件:
UKIP numbties禁令证明了这一点 艾滋病毒感染者。你的意思是Nigel Farage说的 NHS不应该被用来支付那些来英国作为健康的人 游客,当面试官特别询问是否,是的时候说是, 考虑到上述情况,艾滋病病毒感染者不包括在内 受到欢迎。你举起一个稻草人,然后敲门 它带着一层薄薄的同性恋恐惧症。
答案 0 :(得分:5)
您可以尝试使用此脚本从文件中删除SGML标记:
#!/usr/bin/env perl
use strict;
use warnings;
use HTML::Parser;
my $file = $ARGV[0];
HTML::Parser->new(default_h => [""],
text_h => [ sub { print shift }, 'text' ]
)->parse_file($file) or die "Failed to parse $file: $!";
按如下方式使用:
./strip_sgml.pl file.sgm > file.txt
答案 1 :(得分:0)
好的,我找到了解决方案:
从&#34; file.sgm&#34;重命名该文件到&#34; file.html&#34;。然后使用文本编辑器打开html文件,并在行<meta charset="utf-8">
的顶部添加,以便可以正确显示所有字符。最后,使用Web浏览器打开此文件,并将内容复制到新的文本文件中。
答案 2 :(得分:0)
对于 Python 解决方案,来自用户 Hugo 的答案将从文档 (Python/BeautifulSoup - how to remove all tags from an element?) 中删除所有标签。
TLDR 使用 Beautiful Soup 中的 get_text() 函数。