2

非常感谢通过编辑我的问题标题和标签来提供帮助!

有时,我的“对话”语料库中的一个参与者会使用昵称来指代另一个参与者,通常是缩写或拼写错误,但此后我只会说“昵称”。假设我愿意手动告诉我的软件我是否认为各种可能的昵称实际上是昵称,但我希望软件能够列出识别人的句柄和潜在昵称之间可能匹配的列表。我该怎么做呢?

关于我和我的语料库的背景:我没有进行自然语言处理的经验,但我是 R 的一名称职的数据分析师。我的数据由 70 个团队生成,每个团队预测未来某个时间发生 100 个不同事件的可能性。我有 70 x 100 = 7000 个文本文件的结果,其中包含参与者所做的预测流以及他们在预测中包含的评论。我将在下面粘贴其中一个文本文件的一个非常简短的片段,这个文件与马里政府是否会与 MNLA 进行谈判有关:

2013 年 2 月 12 日 20:10:past_returns 回答是:(50%)

当我放入我以前的占位符时,我没有做很多研究......由于 DougL 的预测,我正在增加很多

2013 年 2 月 12 日 19:31:DougL 回答是:(60%)

如果 MNLA 放弃领土主张,软弱的总统特劳雷希望进行谈判。马里的军方可能不想谈判。法国想要谈判。MNLA 建议它只需要自治。但在 7 周内?

2013 年 2 月 12 日 10:59:past_returns 回答否:(75%)

占位符预测... http://www.irinnews.org/Report/97456/What-s-the-way-forward-for-Mali

我最初的想法:显然,我可以从提供我希望与之匹配的名称开始......在上面的示例中,它们将是 past_returns 和 DougL(尽管上面没有使用昵称)。我认为让计算机猜测轻微的拼写错误并不难(尽管我个人不知道从哪里开始)。我可以想象可以使用其他技巧,例如假设一个字符串比其他团队更多地使用它时,它更有可能是一个昵称。昵称更有可能指代最近发言的人,而不是很久以前发言的人,或者根本不涉及这个问题。并且它们应该以类似于语料库中通常使用全名/网名的方式在句子中使用。但我很想听听简单的方法,

4

1 回答 1

3

这可能会变得像你想要的那样复杂。从事物的半语言方面来看,研究主题将包括Levenshtein 距离(用于检测已知名称/昵称的轻微拼写错误)和命名实体识别(用于首先检测名称/昵称的任务)。实际上,NER 值得一读,但现有系统在您的论坛句柄和昵称领域可能对您没有多大帮助。

想到的第一个粗略的想法是,您可以针对英语词典(可能是从维基词典或类似WordNet编译的数据集)运行语料库的标记化版本,以找到候选名称的单词,然后通过一些启发式过滤这些单词(它们是否以与已知全名相同的字母开头?它们与已知名称的 Levenshtein 距离是否较低?是否多次使用?)。

您还可以针对非单词标记尝试一些聚类或监督 ML 算法。这可能会揭示一些经常出现在与给定用户名相同的线程中的非“单词”标记;同样,启发式方法可以帮助排除一些误报。

祝你好运; 听起来像是一个有趣的问题——希望我至少提到了一件你还没有想到的事情。

于 2013-10-02T01:21:05.943 回答