Используем поисковые движки для проверки корректности фраз

По работе мне часто приходится вести переписку на английском, и в силу недолеченного перфекционизма, пользоваться для этого оффлайн/онлайн переводными/толковыми словарями. В целом они со своей работой справляются, пока дело не доходит до проверки правильности словосочетаний или целых фраз. Хочешь ввернуть что-нибудь из разряда продвинутого владения языком, но нет уверенности, что правильно помнишь (большой привет предлогам и фразовым глаголам).

Есть парочка ресурсов, для поиска фраз, но заточены они в основном под общеупотребимые словосочетания, пословицы и фразеологизмы на отдельно взятом языке. К тому же не известно пользуются ли люди искомой фразой или употребив её вы поставите в тупик даже носителя языка.
Для решения проблемы я привык использовать googlе. Метод прост до неприличия: ищем всю фразу целиком (для тех, кто не в курсе – фразу для этого нужно заключить в двойные кавычки), получаем как всегда набор ссылок + большой бонус в виде кучи рекламы количества найденных страниц. Вот эта цифра нас и интересует. Если количество «попаданий» подозрительно мало, перефразируем и/или исправляем ошибки. Снова ищем. Обычно за 2-3 итерации получается нормальный результат.

Ещё пара плюсов метода:
+ не зависит от используемого языка. Так что когда «заклинит» (издержки свободы интернета – иногда просто забываешь, как оно было в «великом и могучем»), я тоже им пользуюсь;
+ репрезентативная выборка из ну оооооооооооочень большого количества проиндексированных страниц, а следовательно языка «живого» и актуального.

На то, какой результат считать нормальным влияют несколько факторов:
— длина фразы;
— распространённость в языке;
— общее количество ресурсов в Интернете на данном языке (очевидно, что сайтов на немецком на порядок меньше, чем на испанском и т.д.).
В общем всё достаточно очевидно, нужно только немного набить руку. Например, для распространённых словосочетаний на английском результат должен исчисляться хотя бы сотней тысяч (почему не миллионами объясню чуть ниже).

Минусы метода (при использовании браузеров):
— подсказки и история поиска в браузерах иногда вызывают скрежет зубовный. То нечаянно выбираешь другую фразу из предложенных, то борешься с кавычками. Мелочь, а иногда раздражает;
— нужно держать браузер открытым, что частенько вредно для “getting thing done”, то бишь отвлекает от работы. Либо запускать браузер (со всеми 100+ вкладками, открытыми с позапрошлого года. Шутка, конечно, но недалеко от правды. Разве что Firefox не пытается их все подгрузить при старте, но и он «отыгрывается» на загрузке кучи плагинов, которые так приятно устанавливать и так жалко удалять).

С целью борьбы с издержками метода и была написана консольная программка на Питоне (2.7), которая ищет фразы используя поисковые движки Google и Bing. Пример использования:



Пара комментариев:
— я немного увлёкся и прикрутил поиск в Bing-е, хотя это и избыточно. Уберите сами, если будет мешать задержка на дополнительный запрос. Так же для Bing, если вы захотите использовать исходник программы, нужно получить подписку на пользование Bing Search API (5000 запросов в месяц бесплатно) на Windows Azure Marketplace, и затем создать Account Key (имя не имеет значения). Ключ, который выдаётся по умолчанию не подходит (видимо из соображений безопасности, поправьте меня если это не так). В дистрибутиве под Windows ключ естественно уже прописан, но если перестанет работать, значит исчерпаны запросы на текущий месяц;
— в силу заморочек Google AJAX API, с помощью которого выполняется запрос, приблизительное количество «попаданий» будет очень сильно приблизительным (то, о чём я писал выше — иногда на порядок отличается от цифры выдаваемой при поиске с помощью браузера). Эта проблема известна как code.google.com/p/google-ajax-apis/issues/detail?id=32. Есть подозрение, что Bing Search API ведёт себя так же хитро;
— так же, учитывая мои затруднения с преобразованиями кодировок в Питоне (консоль, система, запрос), я не смог добавить поддержку кириллицы. Если кто-то захочет допилить — милости прошу.

Исходник и архив с дистрибутивом под Windows можно взять здесь.
Дистрибутив достаточно разархивировать в какую-нибудь папку, и добавить путь к ней в системные пути.

Буду благодарен за ссылки на похожие посты/ресурсы/программы.

UPD: Хабраюзер revol0ution подсказал похожий пост.
UPD: Ссылка на интересный ресурс Google по поиску слов и фраз в книгах, от пользователя coffeecupwinner.
Share post
AdBlock has stolen the banner, but banners are not teeth — they will be back

More
Ads

Comments 11

    +1
    Свой похожий online-сервис мой друг описывал здесь: Универсальная on-line проверка грамматики с помощью google ajax search api
      0
      Спасибо, добавил ссылку в пост.
      +1
      А в чем смысл этой программы из 10 строк? В консоль текст под виндой трудно вставить, проще в гугле поиск сделать через браузер, заодно гугл подскажет «возможно, вы имели ввиду ХХХХ ХХХХ» если в поисковой фразе была опечатка. В браузер хоть вставить можно через ctrl-v или shift-ins.

      Можно держать специальную сборку portable firefox для таких поисков чтобы не пускать основной браузер.

      Например если нам надо проверить, как правильно писать — «publish to the appstore» или «publish on the appstore». Используя эту консольную прогу надо будет 2 варианта фразы набивать ручками или мучаться со вставкой этих фраз в консоль, используя мышь.
        –1
        Смысл — маленький инструмент которым я пользуюсь. Может кому-то пригодится. Конечно хотелось бы, что бы Windows получше обходилась со свей консоль, но увы. Пока стараюсь воспринимать это как дополнительную тренировку по печати на английском.

        На счёт советов google по правильному написанию фраз, то он сразу показывает результат поиска «исправленного» варианта, что мне не очень нравится. Например, если искать, как в вашем примере «publish to the appstore», выдача будет такой:

        Showing results for "publish to the app store"
        Search instead for "publish to the appstore"

        То есть если вы захотите поискать именно то, что имели ввиду, то нужно будет прочитать результат, а потом нажать на вторую ссылку. Меня же больше интересует быстрый ответ из разряда «да»/«нет». Ну, а про небольшие трудности со вставкой текста в кавычках в строку поиска браузера — я писал в самом посте. В общем всё это дело личных пристрастий. Ваш способ в чём-то лучше.

        «portable firefox», это вариант, но со всеми соблазнами запущенного браузера.
          +1
          В консоль текст под виндой трудно вставить

          Смотря как вставлять. Если поставить QuickEdit Mode галочку (правой кнопкой на заголовке окна консоли -> Properties), то нажатие правой кнопки мыши на окне консоли будет считаться за «копировать», если был выбран текст и за «вставить», если не был.
            0
            Эврика! Спасибо, не знал.
        • UFO just landed and posted this here
            0
            Наверное да, спасибо, нужно будет подправить. Я пока «плаваю» в библиотеках Питона.
            0
            Посмотрите еще в сторону Google Books Ngram Viewer, позволяет проверять/сравнивать частоту встречаемости фраз из 1-5 слов в книгах (на разных языках, к тому же). В некоторых случаях бывает очень удобно.
              0
              Да, проблема правильного употребления и расстановки слов в предложении актуальна. Но к сожалению, пока ни одна из этих программ не устраивает.

              Еще была похожая реализация:
              1)пользователь вводит фразу РУ1 на русском языке, а программа с помощью google-translate пословно переводит ее на английский АНГ1.
              2)Затем гугл ищет похожую на АНГ1 фразу на английском АНГ2. АНГ1=АНГ2 — ок. нет? -идем дальше.
              3)программа переводит английскую фразу на русский язык РУ2. РУ1=РУ2 -ок. нет? -идем дальше.
              4)программа ищет на русском языке похожую на РУ2 фразу РУ3. РУ3=РУ2 -ок. нет? — идем дальше.
              5)программа переводит РУ3 на АНГ3. АНГ3=АНГ2 -ок, нет? -идем дальше.
              и так далее.
              программа остановится и выдаст фразу на двух языках, когда РУ(i)=PУ(i-1) и АНГ(j)=АНГ(j+1).
              Плюс программы в том, что пользователь учится правильно формулировать фразу как на русском так и на английском языке. Т.е. учится употреблять по возможности легко переводимые фразы. Другой плюс — программа делает все очень быстро.
              Минус- смысл может немного исказиться. (но ведь у нас есть и перевод на русском- так что мы можем вручную легко проконтролировать, насколько изменился смысл.)
                0
                Да, задумка интересная. Хотелось бы посмотреть, что получится на выходе. Английский в этом смысле довольно сложен, в связи с сильной зависимостью значения слов и словосочетаний от контекста.

                Я думал о чём-то подобном, только без перевода с языка на язык:
                1) Берём тест, разбиваем на предложения. Длинные предложения разбиваем на фразы (можно ориентироваться по зяпятым и/или по частям речи).
                2) Прогоняем фразами через поиск Google, получаем количество совпадений для каждой из них. Смотрим какие фразы сильно отклонились от распределения (то есть, где меньше всего совпадений с результатом поисковика).
                3) Выделяем для автора спорные моменты. Рекомендуем замены, если поисковик их предлагает.

                Можно даже подсвечивать вызывающий сомнения текст «на лету», по мере набора. Что-то вроде проверки соответствия текста текущему состоянию языка. Архаизмы, арго, фразы с ошибками — должно, в теории, выделять. Если решение «велосипедное», прошу поделиться ссылкой.

              Only users with full accounts can post comments. Log in, please.