Это произносится GIF

Это произносится GIF

Исходный узел: 3043181

Поскольку приближается сезон отпусков, и писец Hackaday сидит, защищенный от надвигающихся атлантических штормов, в своем уютном гнезде, пришло время задуматься об основах своего ремесла. Письмо, орфография и английский язык; такие вопросы, как почему у американцев английское написание отличается от британского, но, возможно, самый важный из них для читателей Hackaday; это «гиф» или «джиф»? Это или шутливое предложение о правописании можно было бы счесть очевидным кликбейтом, но вместо этого они служат ручкой, с помощью которой можно погрузиться в изучение языка. Как же нам определить условности нашего языка, и стоит ли нам вообще слишком сильно заботиться о них?

Не верьте всему, что читают в школе

Фотография американского класса 1004 года.
Не все, чему вы здесь научитесь, стоит того, чтобы его придерживаться. Харрисон Кили, CC BY 4.0.

Нас отправляют в школу, чтобы чему-то научиться. В это время мы лишены свободы, поскольку череда взрослых год за годом пытается набить нам головы фактами. Некоторые из них мы находим интересными, другие — не очень, но по большей части нам не рекомендуется думать самостоятельно, и вместо этого мы должны выучить наизусть набор фиксированных учебных программ.

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

В результате те, кто боится двигаться вместе с языком, набрасываются на предполагаемые отклонения от правил, и мы даже начинаем вести собственные лингвистические священные войны. Упомянутое выше о «gif» и «jif» является отличным примером, действительно ли так уж важно, произносите ли вы это слово с твердой «G», потому что именно так это говорит большинство людей, или так, как если бы это было «J» потому что создатель формата файла так сказал? На самом деле нет, потому что английский — это развивающийся язык в руках тех, кто на нем говорит, а не тех, кто пишет школьные учебники.

К сожалению, сейчас не время радоваться, потому что даже если некоторые из этих правил могут меняться со временем, они не являются бесплатными для всех. Язык должен быть взаимопонятным, мы не можем просто придумывать его по ходу дела. Профессионалы используют так называемый описательный подход, когда они рассказывают вам, как вы используете язык, а не запрещают, как вы его используете. должен использовать его. Они делают это посредством статистического анализа больших корпусов текстов, чтобы увидеть, какие формы набирают наибольшую популярность. И вот тут-то это становится интересным, потому что крупномасштабный языковой анализ может рассказать вам то, чего вы не знали о предмете, о котором, как вам казалось, вы знали много.

Как я не был изобретателем компьютерной лингвистики

Модель Raspberry Pi b, расположенная на корпусе жесткого диска USB
Этот пыльный Raspberry Pi и жесткий диск около десяти лет стояли за моим телевизором, обрабатывая текст из RSS-каналов.

Я познакомился с языковым анализом около пятнадцати лет назад, когда работал над улучшением видимости очень большого веб-сайта в поисковых системах. Тогда это был не хитроумный мир теневых манипуляций с поисковыми системами, а я был там, чтобы значительно улучшить контент сайта и, короче говоря, сделать его намного более интересным как для людей, так и для поисковых систем. В этом начинании невероятно полезен небольшой анализ текста, и прежде чем я узнал об этом, несколько простых PHP-скриптов для обработки текста превратились в полноценный пакет.

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

Почувствовав вкус к языковому анализу, этот проект стал одним из тех проектов, который оставался со мной на протяжении многих лет, поскольку я возвращался к нему время от времени по мере того, как мой интерес то возрастал, то угасал, а моя первоначальная сюита превратилась во что-то значительное. полезнее. И именно об этом и стоит писать здесь, потому что в этом нет ничего особенно сложного. Если я могу это сделать, то сможете и вы, поэтому стоит попытаться описать это.

Чтобы построить корпус текста для анализа, сначала необходимо начать с некоторого текста. Меня особенно интересовали данные временных рядов, а также язык, поэтому я взял в качестве источника столько RSS-каналов, сколько смог найти. Это дало мне бесконечный запас нового текста для моего анализа, а моей рабочей лошадкой стал Raspberry Pi с большим жестким диском USB, который спокойно проводит часть дня, извлекая истории и обрабатывая их.

Итак, столкнувшись с недавно полученным фрагментом текста, каков мой первый шаг? Прежде всего, чтобы удалить посторонний HTML и мусор с веб-сайта, что раньше сильно раздражало правила, пока я не обнаружил, что у Lynx есть опция командной строки -dump, которая выполняет всю тяжелую работу. Затем пришло время разделить его по разделителям предложений, таким как точки и вопросительные знаки, и разделить предложения по словам в массив. Затем я могу просмотреть его слово за словом и обработать то, что найду, в свое хранилище данных.

Как быстро найти одно слово из миллиарда?

Когда у вас есть несколько тысяч точек данных, существует множество вариантов хранения данных. Например, база данных SQL — отличная идея. Но корпус вырастает до огромных размеров и быстро оставляет позади привычные подходы к хранению. Возможно, существует какое-то удивительное программное обеспечение, способное обрабатывать миллиарды экземпляров слов, но я так и не нашел его, поэтому я выбрал что-то встроенное в мою файловую систему. Я бы использовал пути к файловой системе в качестве запросов, создавая дерево каталогов из слов, которые я мог бы запросить, просто введя путь.

График случаев «расходов» и «сокращений» в новостях Великобритании в начале 2014 г.
Множество крошечных файлов JSON очень быстро создают график.

Поэтому, просматривая слова в предложении, меня интересуют их частоты и их сочетания, то есть слова, которые появляются рядом. Таким образом, для каждого слова я бы создал каталог с файлом JSON внутри, чтобы записать его появление, и внутри этого каталога я бы создал подкаталог для следующего слова с соответствующим файлом JSON. Так, например, я мог бы определить популярность слова «Нил», открыв JSON в каталоге /neil/, и определить распространенность фразы «Нил Армстронг» в /neil/armstrong/. Я также мог бы сравнить относительную распространенность Нилса Армстронга и Янга, просмотрев /neil/armstrong/ и /neil/young/. В этом подходе к файловой системе приятно то, что сценарий обработки на стороне сервера, все еще написанный на PHP, был очень простым, и моим клиентом мог быть какой-нибудь Javascript в браузере, который в реальном времени извлекал все эти JSON из файловой системы.

Прелесть того, что миллиарды слов анализа английского языка находятся на расстоянии одного щелчка мыши, заключается в том, что я могу очень легко проверить, какая версия фразы является более подходящей, насколько на самом деле популярна эфемерная фраза и даже относительная популярность таких общественных деятелей, как политики. Это все равно, что иметь собственный верификатор лингвистической истины без необходимости полагаться на то, что мне говорят другие, что может быть очень полезно в моей работе. Конечно, у него есть недостатки: например, любая работа с деревом из многих миллионов подкаталогов и небольшими файлами JSON становится очень утомительной. Создание архива даже структуры данных среднего размера занимает пару дней, а это означает, что перемещение его на новый диск требует некоторого планирования.

Возможно, это не обычный способ описания личного проекта на Hackaday, но он требует не меньше времени на разработку и технологическую эволюцию, чем любая моя аппаратная работа. Если вы хотите пойти по моим стопам, то, боюсь, я стесняюсь публиковать свой беспорядочный беспорядок из старого PHP и Javascript, но, учитывая, что его функция довольно хорошо описана выше, я думаю, что большинство из вас могли бы написать его. себя, если вы обратили на это свое внимание. Даже если вы этого не сделаете, я надеюсь, что это дало вам представление о том, как работает корпусный анализатор и может рассказать вам то, чего вы не знали, и вы последуете моему совету не слушать все, что вам говорил школьный учитель.

Отметка времени:

Больше от Взломать день