Google Ngrams 数据集中的标签

Tags in Google Ngrams dataset

tl;dr :我找不到 Google Grams Dataset besides that one 中使用的所有标签的完整列表,其中仅包括 PoS 标签和 _START__ROOT__END_

,_.._._._ 等标记是什么意思?鉴于它们的频率——见下文——我强烈假设它们是 tags(它们不能是正确的标记)。


上下文:
我正在尝试从 Google 的 n-grams 数据集中提取信息,但在理解它们的一些标签以及如何将它们考虑在内时遇到了麻烦。

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

棘手的部分是计算 count("equal *")
事实上,例如,bi-gram equal to 在 Google n-grams 数据集中占了很多次:

如我在 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。这加强了我的假设,即一次计数将占三次。但我忍不住说服自己最好的方法是什么,特别是通知这些奇怪的标记 ,_.._._._ 是什么意思我没有任何线索。

documentation does not mention two of the tags, but the 2012 paper Syntactic Annotations for the Google Books Ngram Corpus 中给出的 POS 标签列表:

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

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