如何自动确定文字质量?

时间:2010-02-15 08:57:13

标签: nlp

许多自然语言处理(NLP)算法和库很难处理来自网络的随机文本,通常是因为它们预先假定清晰,清晰的写作。我可以理解为什么这比解析YouTube评论更容易。

我的问题是:给定一段随机文本,是否有一个过程来确定该文本是否写得很好,是否适合在NLP中使用?这些算法的通用名称是什么?

我希望链接到文章,算法或代码库,但我会满足于良好的搜索条件。

6 个答案:

答案 0 :(得分:15)

'写得好'和'对NLP有益'可能会在一起,但不必。对于一个“对NLP有益”的文本,它可能应该包含最后一个动词和一个点的整个句子,它应该传达一些含义。对于要写得好的文本,它也应该是结构良好,有凝聚力,连贯性,正确替代代词的名词等。你需要什么取决于你的应用程序。

NLP工具正确处理句子的机会通常可以通过一些简单的启发式方法来估计:它是否太长(> 20或30个单词,取决于语言)?太短?它包含许多奇怪的字符吗?它是否包含网址或电子邮件地址?它有一个主要动词吗?它只是一个列表吗?据我所知,这方面没有通用名称,也没有任何特定的算法用于这种过滤 - 它被称为“预处理”。

关于一个写得很好的句子:已经做了一些关于自动评估可读性,内聚性和连贯性的工作,例如: Miltsakaki(Evaluation of text coherence for electronic essay scoring systemsReal-time web text classification and analysis of reading difficulty)或希金斯(Evaluating multiple aspects of coherence in student essays)的文章。这些方法都是基于一种或另一种话语结构理论,如中心理论。这些文章相当理论沉重,并且承担着中心理论和机器学习的知识。尽管如此,ETS成功应用了其中一些技术来自动评分学生的论文,我认为这与你想要做的非常相似,或者至少,你可能能够适应一些想法。

所有这一切,我相信在未来几年内,NLP必须开发技术来处理与当前标准相关的 格式良好的语言。网上有大量非常有价值的数据,包括你提到的文本类型:youtube评论,聊天消息,Twitter和facebook状态消息等等。所有这些都可能包含非常有趣的信息。那么,谁应该适应 - 那样的人或者NLP?

答案 1 :(得分:7)

尝试一个简单的方法是使用n-gram语言模型对文本进行分类或不进行分类。要做到这一点,你首先要在一组写得很好的文本上训练一个语言模型。给定一个新的文本,然后您可以在其上运行模型,并且如果每个单词的困惑度足够低(即,如果它看起来与写得好的训练文本足够相似),则仅将其传递给其他下游NLP工具。

为了获得最佳效果,您应该在文本上训练您的n-gram语言模型,该模型类似于用于训练您正在使用的其他NLP工具的任何内容。也就是说,如果您使用的是phrase structure parser受过新闻专线培训,那么您还应该在新闻专线上培训您的n-gram语言模型。

对于可以用于此类事件的软件工具包,SRILM将是一个很好的起点。

但是,另一种解决方案是尝试将您正在使用的任何NLP工具调整为您要处理的文本。这种方法的一种方法是自我训练,通过这种方法,您可以在您想要处理的数据类型上运行NLP工具,然后在自己的输出上重新训练它们。例如,McClosky et al 2006使用这种技术来获取最初在华尔街日报上训练的解析器,并使其适应解析生物医学文本。​​

答案 2 :(得分:4)

我没有使用任何工具,但我有一个想法。

一个简单的策略是采用干净的英文文本,找出各种词性标记的直方图,如名词,形容词,动词,文章等。

现在查看示例文本,找出类似的直方图。

如果此直方图与基准测试“足够接近”,则示例文本的质量与原始文本一样好。您可能需要定义“closeness”参数。

语言识别通常采用类似的技术。对于语言,创建n-gram配置文件。为示例文本创建了类似的配置文件,并比较了两个配置文件,以找出样本文本成为该语言的概率。

答案 3 :(得分:3)

我不熟悉任何执行此操作的软件包。这听起来像是一个分类问题,你可以尝试通过标记几百个好的和坏的文档,然后从文本中得到特征(正确拼写的单词的百分比,句子的最佳解析概率,谁知道)来解决。从标记的数据中,您可以构建一个好的/坏的分类器,可能会做一些有用的事情。然后,它可能不会。

您也可以尝试使用可读性测量。通常它们用于说“此文本处于四年级阅读水平”之类的内容,但它们可能会为您的意图提供一些信号。一些示例包括Flesch-KincaidGunning fog

答案 4 :(得分:2)

正如其他人所说,“写得好”是一个非常主观的观点。你能做的最好的事情就是建立一个“写得好”和“写得不好”(根据你的标准)文本的语料库。如果你能够创建一个用数字术语对它们进行分类的方法(Youtube注释为0.1,Stack Overflow注释为0.9),你将获得奖励。

一旦你做到了,会有很多选择,但在这种情况下我会推荐统计的。 N-gram可能以简单的相对频率完成工作,但我建议你研究马尔可夫模型,尤其是贝叶斯文本分类工具。

事实上,一旦你收集了“好”和“坏”文本,最好的单一答案就是使用许多免费的分类系统(想想反垃圾邮件工具)。最好的将取决于您的需求和您最熟悉的编程语言。

答案 5 :(得分:0)

可以使用zipf法则,词汇增长曲线和帕累托分布来确定文本质量。可以在

找到一个有趣的论文来解释这一点

http://ilk.uvt.nl/downloads/pub/papers/hait/camp2008.pdf