Google Ngrams数据集中的标签

时间:2018-04-20 12:34:50

标签: python-3.x pyspark nlp n-gram part-of-speech

tl; dr :我找不到除Google Grams Dataset之外的that one中使用的所有标记的完整列表,其中仅包含PoS标记和_START__ROOT__END_

,_.._._._等令牌是什么意思?鉴于他们的频率 - 见下文 - 我强烈认为他们是标签(他们不能成为正确的代币)。

背景:
我正在尝试从Google的n-gram数据集中提取信息,并且无法理解他们的某些标记,以及如何将其考虑在内。

最后,我想估计一个单词跟随另一个单词的可能性 例如,计算令牌protection跟随equal的可能性大致意味着计算count("equal protection") / count("equal *")其中*是通配符:语料库中的任何1个数据块。

棘手的部分是计算count("equal *") 实际上,例如,Google n-gram数据集中的二元组equal to帐户多次出现:

  • equal to
  • as equal to_PRT(消除歧义的PoS版本)
  • equal _PRT_(汇总所有PRT,即可能跟随equal的粒子)。

当我在pyspark上计算时显示:

>>> total = ggrams.filter(ggrams.ngram.startswith("equal ")).groupby("ngram") \
             .sum("match_count")

>>> total.sort("sum(match_count)", ascending=False).show(n=15)

+------------+----------------+  
|       ngram|sum(match_count)|  
+------------+----------------+  
|equal _NOUN_|        20130934|  
| equal _PRT_|        16620727|  
|    equal to|        16598291|  
|equal to_PRT|        16598291|  
|   equal _._|         5119672|  
| equal _ADP_|         3037747|  
|     equal ,|         2276119|  
|   equal ,_.|         2276119|  
|    equal in|         1682835|  
|equal in_ADP|         1682176|  
|     equal .|         1628257|  
|   equal ._.|         1628257|  
|equal _CONJ_|         1363739|  
|    ...     |             ...|  

因此,为了避免多次计算同一个二元组,我的想法是将所有模式的所有计数加起来,例如"equal <POS>",其中<POS>在描述的PoS集[_PRT_, _NOUN_, ...]中(可查找) here

这样做我获得的总和数字是我从上面显示的数据框中得到的数字的1/3。这加强了我的假设,一个计数将占三倍。但我无法说服自己最好的方法是什么,特别是通知这些奇怪的令牌,_.._._._这些含义我没有任何线索。< / p>

1 个答案:

答案 0 :(得分:2)

documentation 中给出的词性标签列表没有提到其中两个标签,但 2012 paper Syntactic Annotations for the Google Books Ngram Corpus 提到了:

  • ‘.’(标点符号)
  • X(其他类别的统称,例如缩写词或外来词)

所以标记 ,_. 是一个附加了它的 POS 标签的逗号,就像标记 run_VERB 一样。类似地,._. 是一个附加了其词性标记的句号。最后,_._ 表示标点符号,任何标点符号就像 _VERB_ 是任何动词。