【发布时间】:2013-09-26 12:27:27
【问题描述】:
我有一个从文本中提取公司名称的算法。它通常做得很好,但是,它有时也会提取看起来像公司名称但显然不是的字符串。例如,“Contact Us”、“Colorado Springs CO”、“Cosmetic Dentist”显然不是公司名称。这样的误报太多太多了,所以我想介绍一种算法方法来对提取的字符串进行排名,以便丢弃排名最低的字符串。
目前,我正在考虑使用statistical language model 来执行此操作。该模型可以根据字符串中每个单词的概率乘积对每个字符串进行评分(考虑最简单的unigram 模型)。我的问题是:这样的模型可以用来比较不同长度的单词序列吗?由于根据定义,概率小于 1,因此较长序列的概率通常会小于较短序列的概率。这会使模型偏向于更长的序列,这不是一件好事。
有没有办法使用这种统计语言模型来比较不同长度的单词序列?或者,有没有更好的方法来对序列进行评分?
例如,使用二元模型和一些现有数据,这就是我得到的:
python slm.py About NEC
<s> about 6
about nec 1
nec </s> 1
4.26701019773e-17
python slm.py NEC
<s> nec 6
nec </s> 1
2.21887517189e-11
python slm.py NEC Corporation
<s> nec 6
nec corporation 3
corporation </s> 3593
4.59941029214e-13
python slm.py NEC Corporation of
<s> nec 6
nec corporation 3
corporation of 41
of </s> 1
1.00929844083e-20
python slm.py NEC Corporation of America
<s> nec 6
nec corporation 3
corporation of 41
of america 224
america </s> 275
1.19561436587e-21
缩进线显示模型中的二元组及其频率。 <s> 和 </s> 分别是句子的开头和结尾。问题是,句子越长,它的可能性就越小,不管它的组成二元组在数据库中出现的频率如何。
【问题讨论】:
-
我知道这是很久以前发布的,但你还记得你最终做了什么来解决这个问题吗?
标签: statistics nlp modeling