Среднее и дисперсия произносимых слов

Вот решение perl:

$ perl -F',' -lane '$last=$#F;$F[$last]=sprintf("MI-%02d",$F[$last]);print join ",", @F' input.txt                                       
36,53,90478,0.58699759849,0.33616,4.83449759849,0.0695335954050315,MI-03
36,53,90478,0.58699759849,0.33616,4.83449759849,0.0695335954050315,MI-08
36,53,90478,0.58699759849,0.33616,4.83449759849,0.0695335954050315,MI-14
36,53,15596,0.58454577855,0.26119,2.24878677855,0.116147072052964,MI-12

Флаг -a позволяет рассматривать входные данные как массив на основе разделителя, заданного с помощью -F. По сути, мы изменяем последний элемент в этом массиве и перестраиваем его с помощью команды join.

1
21.08.2018, 01:23
1 ответ

Perl , вероятно, лучший язык для такого рода работы. Основной автор Перла, Ларри Уолл , является одновременно программистом Unix и лингвистом, и этот язык сильно отражает его интерес к лингвистике. Существует множество модулей perl для языковой обработки, а также для простой обработки текста.

Например, Lingua :: Sentence , который представляет собой модуль perl для разделения абзацев на предложения. И множество других модулей Lingua :: . Фактически, модули Lingua :: Sentence и были написаны для задачи, очень похожей на то, что вы делаете сейчас, - статистического анализа текстов (в данном случае, Europarl corpus , текст, взятый из заседаний Европейского парламента)

Вы можете, например, использовать Lingua :: Sentence , чтобы разбить каждый абзац на предложения, подсчитать количество слов в каждом предложении , сохраните это количество в массиве, а затем выполните любой необходимый статистический анализ этого массива.

Perl также имеет множество модулей для статистического анализа, которые вы также можете найти на CPAN (Комплексная сеть архивов Perl) или вы можете вывести необработанные данные в файл и обработать их с помощью R или другой инструмент статистики.

1
27.01.2020, 23:48

Теги

Похожие вопросы