我正在处理一个Python NLP任务,我需要从包含噪音的名词短语列表中删除非技术/非常常见的名词短语。下面是一个例子:
["people", "US presidents", "New York City", "electric cars", "vegan food", "the best"]
我需要删去"people"
和"the best"
。我想使用一个ngram数据集来做这件事:"people"one_answers"the best"的频率比任何其他名词短语都要高得多,所以有可能将它们标记为异常值并将其剔除。Google ngram数据集非常适合这个目的:
url = "https://books.google.com/ngrams/json"
query_params = {
"content": <my_noun_phrase/string of noun phrases>,
"year_start": 2017,
"year_end": 2019,
"corpus": 26,
"smoothing": 1,
"case_insensitive": True
}
response = requests.get(url=url, params=query_params)
但遗憾的是,他们的API(没有文档记录)不能处理大量的流量-我经常得到429错误(太多的请求)。是否有更好的方式与Google ngram API进行交互?或者有人知道其他api/web服务提供相同的功能(即允许用户从非常大的语料库中检索多词表达式的词频数据)吗?提前感谢!嗯,有一个非常简单的答案:你可以下载整个Google NGrams数据,然后在本地处理你的数据。
显然下载需要相当多的时间(并且需要大量的存储空间),但是一旦下载完成,你可以处理尽可能多的数据,与API相比非常快。
也有NGRAMS,它允许您搜索该数据集的版本3。它还有一个REST API。