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 数据集中占了很多次:
- 如
equal to
、
- as
equal to_PRT
(消除歧义的 PoS 版本)
- as
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。这加强了我的假设,即一次计数将占三次。但我忍不住说服自己最好的方法是什么,特别是通知这些奇怪的标记 ,_.
、._.
、_._
是什么意思我没有任何线索。
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_
一样是任何动词。
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 数据集中占了很多次:
- 如
equal to
、 - as
equal to_PRT
(消除歧义的 PoS 版本) - as
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。这加强了我的假设,即一次计数将占三次。但我忍不住说服自己最好的方法是什么,特别是通知这些奇怪的标记 ,_.
、._.
、_._
是什么意思我没有任何线索。
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_
一样是任何动词。