Perl 将.sgm转换为.txt

Perl 将.sgm转换为.txt,perl,text,speech,sgml,Perl,Text,Speech,Sgml,我有一些.sgm格式的文件,我必须对它们进行评估(应用语言模型并获得文本的复杂性) 主要问题是我需要这些文件的纯格式,即txt格式。然而,我一直在互联网上搜索一个在线转换或某种脚本这样做,但找不到 除此之外,我的一位老师用perl向我发送了以下命令: perl -n 'print $1."\n" if /<seg[^>]+>\s*(.*\S)\s*<.seg>/i;’ < file.sgm > file 顺便说一下,我正在使用MacOSX 示例.sgm

我有一些.sgm格式的文件,我必须对它们进行评估(应用语言模型并获得文本的复杂性)

主要问题是我需要这些文件的纯格式,即txt格式。然而,我一直在互联网上搜索一个在线转换或某种脚本这样做,但找不到

除此之外,我的一位老师用perl向我发送了以下命令:

perl -n 'print $1."\n" if /<seg[^>]+>\s*(.*\S)\s*<.seg>/i;’ < file.sgm > file
顺便说一下,我正在使用MacOSX

示例.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>


英国知识产权局禁止艾滋病毒携带者就是最好的例证。
你是说奈杰尔·法拉奇(Nigel Farage)说不应该用NHS来支付作为健康旅游者来到英国的人的费用,当采访者特别问到,考虑到上述情况,艾滋病毒携带者是否被包括在不受欢迎的范围内时,他说是的。
你养了一个稻草人,然后带着对同性恋的恐惧把它打倒。
Otuput.txt文件:

英国知识产权局的禁令就很好地说明了这一点 艾滋病毒感染者。你是说奈杰尔·法拉奇说 NHS不应该用来支付作为健康保险来英国的人的费用 当面试官特别问到, 考虑到上述情况,艾滋病毒携带者被纳入非传染性疾病名单 欢迎光临。你养了一个稻草人,然后敲门 这是一种隐晦的同性恋恐惧症


好的,我找到了一个解决方案:


将文件从“file.sgm”重命名为“file.html”。然后用文本编辑器打开html文件,并在顶部添加行
,以便正确显示所有字符。最后,使用web浏览器打开此文件,并将内容复制到新的文本文件中

您可以尝试使用此脚本从文件中删除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

对于python解决方案,用户Hugo的回答将从文档()中删除所有标记


TLDR使用Beautiful Soup的get_text()函数。

请发布示例
.sgm
文件,以及转换为
.txt后的外观。我编辑了帖子@bartIs困惑真的是某种度量吗?我想参与其中!您好@Borodin,是的,困惑是评估语言模型(LM)的一个广泛使用的度量标准。LM是通过分析大量训练文本获得的。要评估它,您需要将LM应用于多个测试文本。为了量化生成的LM的良好/准确程度,您需要计算每个测试的复杂度。困惑越少,你的人生就越好。例如,如果您使用Bibble作为训练语料库,使用WhatsApp组日志作为测试语料库,那么由于训练和测试语料库的性质完全不同,因此困惑度会很高。请参阅“自然语言建模”了解更多信息:-)注意,此方法将删除换行符分隔符。
./strip_sgml.pl file.sgm > file.txt