Веб-API для запроса данных о частоте слов

Существует множество алгоритмов, основанных на сравнительной частоте слов, используемых в кластеризации , анализе ключевых слов , tf-idf и т. д.

Обычно вам нужно вычислить частоту собственных слов из вашего собственного корпуса. Очень большие корпуса лучше, но, конечно, это требует много работы, места, времени и т. д. и отвлекает от текущей задачи.

Мне интересно, есть ли какие-либо поставщики веб-API, которые сделали все это за вас и предоставили программный доступ к частотным данным через Интернет.

Требования:

  • Английский обязателен, знание других языков приветствуется.
  • Бесплатно лучше, чем платно, открыто лучше, чем закрыто.
  • Дополнительное определение основы и/или лемматизация было бы плюсом, но не обязательным.
  • Любые требования по регистрации, дросселированию, дневным лимитам и т. д. допустимы.
  • Любой формат подходит, но ожидается urlencoded и JSON.
  • Поддержка Unicode является очень важным преимуществом. (Не следует взрываться такими словами, как кафе, наивный и т. д.)
Извините, что так говорю, но это определенно выходит за рамки этой стороны. «Рекомендации по программному обеспечению» — это рекомендация программного обеспечения , а не поставщиков/услуг. Боюсь, это относится и к вашему другому вопросу, хотя это может быть пограничным.
Если ничего не помогает, вы все равно можете загрузить данные для Google n-gram viewer ( books.google.com/ngrams ) и запустить свой собственный интерфейс. Корпус большой.
@Izzy Это облом, потому что запрос API также не по теме в stackoverflow (и, возможно, также Programmers.se и superuser.se, я не проверял)
@JanDoggen: Да, оно слишком велико для установки на этот нетбук или на смартфоны и планшеты, которые, похоже, есть у большинства пользователей приложений в наши дни. Это нормально, если вопрос не находит API, по крайней мере, теперь есть место для наблюдения и мониторинга в случае его появления, и другие люди тоже найдут это благодаря возможности обнаружения Google Stack Exchange (по иронии судьбы).
@Izzy: Тогда вас может заинтересовать вопрос, который я специально потрудился задать на мета , чтобы получить некоторую уверенность, что он будет по теме, прежде чем я пошел дальше и спросил!
Пожалуйста, различайте «запрашивать API» (здесь по теме) и «запрашивать провайдера/веб-сайт» (не по теме). Подробности смотрите в моем ответе на ваш вопрос в Meta . Ваш вопрос о Meta касался поиска разъяснений для части API, но этот вопрос здесь скорее относится к другому: мне интересно, есть ли какие- либо провайдеры, которые поддерживают...
Хорошо, если это официальное слово о разнице между терминами «Веб-служба» и «Веб-API», тогда я удалю первое, потому что мне абсолютно нужно только что-то программно доступное, но я не был уверен, что могут быть способы доступа к некоторым службам программно, которые менее просты, чем вызовы JSON. Вот почему я пошел с обоими тегами.
Используете ли вы слова «API» или «сервис», это больше похоже на набор данных, который использует программное обеспечение.
Значит, этот сайт предназначен специально для программного обеспечения, которое содержит мало данных или вообще не содержит их? Мне это кажется довольно странным и неестественным различием. Какой-то придирчивый способ навязать взгляд или интерпретацию. Это сделало бы очень много типов программного обеспечения не по теме, включая большое количество карт, проверку орфографии, IME, флэш-карты, просто вылетело из головы. Мне нужно бежать, но это требует мета-темы ИМХО...
отлично, это не ответ на вопрос

Ответы (1)

Чтобы получить относительную частоту слова «smartass» в 1 миллионе слов, выполните запрос:

https://api.datamuse.com/words?sp=smartass&md=f&max=1

Он выводит:

[{"word":"smartass","score":129630,"tags":["f:0.067229"]}]

Извлеките результат из возвращенного json, например, с помощью python (оценка НЕ ​​считается):

import requests

_wait = 0.5

def get_freq(term):
    response = None
    while True:
        try:
            response = requests.get('https://api.datamuse.com/words?sp='+term+'&md=f&max=1').json()
        except:
            print 'Could not get response. Sleep and retry...'
            time.sleep(_wait)
            continue
        break;
    freq = 0.0 if len(response)==0 else float(response[0]['tags'][0][2:])
    return freq

Вы можете звонить сюда 100 000 раз в день . Кажется, что это автоматически поддерживается, если вы запускаете один процесс, поскольку ответ имеет задержку, так что он составляет примерно 100 тысяч ответов в день.

Подсчеты взяты из корпуса Google n-gram.