Sense2vec with spaCy and Gensim

如果你在2015年做过文本分析项目,那么你大概率用的是word2vec模型。Sense2vec是基于word2vec的一个新模型,你可以利用它来获取更详细的、与上下文相关的词向量。本文主要介绍该模型的思想以及一些简单的实现。

多义性:word2vec遇到的问题

当人们编写字典和辞典时,我们会列出每个词语的不同含义。在自然语言处理过程中,利用文档的统计信息来定义词典的概念往往非常有效,其中word2vec系列模型是最常见的用于创建词典的模型。给定一个大规模的文本数据,word2vec模型将创建一个用于储存词语含义的词典,其中每行的数值代表一个词语的内在含义。此时要计算词典中两个单词之间的相似度,等价于计算这两行数据之间的相似性。

word2vec模型的问题在于词语的多义性。比如duck这个单词常见的含义有水禽或者下蹲,但对于 word2vec 模型来说,它倾向于将所有概念做归一化平滑处理,得到一个最终的表现形式。Nalisnick & Ravi注意到这个问题,他们认为模型应该考虑到词向量的多义性,这样我们可以更好地构建那些复杂的词向量。我们想要实现的功能是将不同含义的词语赋值成不同的词向量,同时我们也想知道给定上下文情况时,某个词语对应的具体含义。因此,我们需要分析上下文的内容,这正好是spaCy的用武之地。

Sense2vec: 利用 NLP 方法来构建更精确的词向量

sense2vec 模型的思想非常简单,如果要处理duck的多义性问题,我们只需要将两个不同含义的词语赋值成不同的词向量即可,即duckNduckN和duckVduckV。我们一直在尝试实现这个模型,所以当Trask et al公布了其良好的模型试验结果后,我们很容易地认为这个想法是可行的。

我们跟随 Trask 等人的思路,并将部分的语音标签和名字标签纳入词向量中。此外,我们还合并了基本的名词短语和命名实体,从而获取了单一的词向量。虽然当前的模型只是个简单的草案,但是我们非常高兴可以得到这样的结果。沿着该模型的思路我们还可以做很多事情,比如处理多词问题或者单词拆解问题。

下述代码是数据预处理函数,考虑到篇幅问题,我将剩余部分的代码托管在Github

虽然需要这些预处理过程,但是我们仍然可以利用该模型进行大规模的建模分析。因为 spaCy 使用 Cython 写的,它允许多线程操作,在四线程环境中该模型每秒可以处理 100,000 个单词。

数据预处理之后,我们可以利用常规的方法来训练词向量,比如原始的 C 语言代码、Gensim或者 GloVe。只要数据集中单词由空格分隔,且句子由换行符分隔开就没有问题。唯一需要注意的地方是该模型不应该试图利用其自身的符号,否则可能会错误地拆分标签信息。

我们利用 Gensim 中的基于负抽样方法的 Skip-Gram 模型来训练词向量,其中频数阀值为10 或 5。模型训练后我们将频数阀值设为50,从而减少模型的运算时间。

案例

当我们利用这些词向量来分析问题时,我们发现了许多有趣的事情,以下是一些简单的说明:

语义合成性

该模型训练出来的词向量可以很好地提取合成词的语义信息,比如该模型知道 fair game 不是一个游戏类型,而 multiplayer game 是一种游戏类型。

同样地,该模型知道 class action 和 action 之间的相似度很低,而 class action lawsuit 和 lawsuit 之间有很高的相似度:

词语之间的相似性

以下是 Reddit 网上关于川普的词向量信息:

该模型返回了与‘川普’之间相似度较高的词语,从上述结果中可以看出该模型很好地识别出川普政治家和真人秀明星的身份。我对模型返回的 Michael Moore 非常感兴趣,我怀疑很多人都是他两的粉丝。如果我必须选择出一个异常值的话,那么我会选择 Oprah,该词条和其他词语的相似度较低。

该模型发现 Oprah|GPE 和 Oprah_Winfrey|PERSON 之间的相似度较高,这意味着命名实体识别器还存在一定的问题,具有提升的空间。

word2vec模型可以很好地识别出命名实体,特别是音乐领域的信息。这让我想起我曾经获取推荐音乐的方式:留意经常和我喜欢的乐队一起被提到的歌手。当然现在我们已经拥有更强大的推荐模型,比如观察成千上万人的行为进而得出相应的规律。但是对我来说,该模型在分析乐队相似度时仍存在一些奇怪的问题。

以下是该模型揭示的 Carrot Top 和 Kate Mara 之间潜在的联系:

我花了好多时间在思考这个问题,但是并没有得到任何有意义的结果。也许这里面存在更深层次的逻辑关系,我们需要进一步探究才能得到结果。但是当我们往模型中加入更多的数据时,该现象就消失了,就和 Carrot Top 一样。

食品领域

Reddit 网站上关于食品的一些评论非常有趣,比如 bacon 和 brocoll 之间的相似度非常高:

此外,模型的结果显示热狗和沙拉之间也非常相似:

Using the demo

你可以通过搜索单词或短语来探索相关概念。如果你想要更精确的信息,你可以在查询语句中加入标签信息,比如query phrase|NOUN。如果你没有添加标签信息,那么该模型将会返回关联度最高的单词。标签信息主要由包含了上下文信息的统计模型预测所得。

如果你输入serve,该模型将从serve|VERB,serve|NOUN,serve|ADJ等标签信息中搜寻相关单词。由于serve|VERB是最常见的标签信息,该模型将返回这个结果。但是如果你输入serve|NOUN,你将得到完全不一样的结果,因为serve|NOUN和网球之间的关系非常紧密,而动词形式则表示其他含义。

我们采用了基于频率的方法来区分大小写的情况。如果你的查询命令是小写单词且没有标签信息,我们将假设它是不区分大小写的,同时寻找最常见的标签和单词。如果你的查询命令中包含大写字母或者标签信息,我们将假设你的查询命令是区分大小写的。


原文链接:https://spacy.io/blog/sense2vec-with-spacy

原文作者:MATTHEW HONNIBAL

译者:Fibears

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,372评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,368评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,415评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,157评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,171评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,125评论 1 297
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,028评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,887评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,310评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,533评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,690评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,411评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,004评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,659评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,812评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,693评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,577评论 2 353

推荐阅读更多精彩内容