Программа на Python для статистического анализа текста

в 14:07, , рубрики: python

Программа на Python для статистического анализа текста - 1

Задача подсчета частоты употребления определенных букв в английских и русских текстах является одним из этапов лингво-статистического анализа. В каталоге Каталог лингвистических программ и ресурсов в Cети отсутствует программа на Python для решения указанной задачи.

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

Импорт и начальные переменные

import matplotlib.pyplot as plt; plt.rcdefaults()
import numpy as np
import matplotlib.pyplot as plt
from tkinter import *
from tkinter.filedialog import *
from tkinter.messagebox import *
import fileinput
import matplotlib as mpl

mpl.rcParams['font.family'] = 'fantasy'
mpl.rcParams['font.fantasy'] = 'Comic Sans MS, Arial'

Открытие файла с английским текстом

def w_open_ing():
     aa=ord('a')
     bb=ord('z')
     op = askopenfilename()
     main(op,aa,bb)

Открытие файла с русским текстом

def w_open_rus():
     aa=ord('а')
     bb=ord('ё')
     op = askopenfilename()
     main(op,aa,bb)

Универсальная обработка данных для обоих языков

def main(op,aa,bb):
     alpha = [chr(w) for w in range(aa,bb+1)]   #обратное преобразование кода в символы
     f = open(op , 'r') 
     text = f.read()
     f.close()
     alpha_text = [w.lower() for w in text if w.isalpha()]   #выбор только букв и привидение их к нижнему регистру
     k={}      #создание словаря для подсчета каждой буквы
     for i in alpha:     #заполнение словаря
          alpha_count =0
          for item in alpha_text:
               if item==i:
                    alpha_count = alpha_count + 1
          k[i]= alpha_count
     z=0
     for i in   alpha:      #графическая визуализация данных в поле формы
          z=z+k[i]
     a_a=[]
     b_b=[]
     t= ('|tlettert|tcountt|tpercent,%tn')
     txt.insert(END,t)
     t=('|----------------------------|-----------------------------|---------------------------|n')
     txt.insert(END,t)
     for i in  alpha:       #графическая визуализация данных в поле формы
         persent = round(k[i] * 100.0 / z,2)
         t=( '|t%st|t%dt|t%stn' % (i, k[i], persent))
         txt.insert(END,t)
         a_a.append(i)
         b_b.append(k[i])
     t=('|----------------------------|-----------------------------|---------------------------|n' )
     txt.insert(END,t)
     t=('Total letters: %dn' % z)
     txt.insert(END,t)
     people=a_a     #подготовка данных для построения диаграммы
     y_pos = np.arange(len(people))
     performance =b_b     #подготовка данных для построения диаграммы
     plt.barh(y_pos, performance)
     plt.yticks(y_pos, people)
     plt.xlabel('Quantity(amount) of the uses of the letter in the text')
     plt.title('The letters of the alphabet')
     plt.show()       #визуализация диаграммы

Очистка поля

def clear_text():
        txt.delete(1.0, END)

Запись данных из поля в файл

def save_file():
        save_as = asksaveasfilename()
        try:
                x =txt.get(1.0, END) 
                f = open(save_as, "w")
                f.writelines(x.encode('utf8'))
                f.close()
        except:
                pass

Закрытие программы

def close_win():
     if askyesno("Exit", "Do you want to quit?"):
          tk.destroy()

Стандартный интерфейс ткинтер

tk= Tk()
main_menu = Menu(tk)
tk.config(menu=main_menu)
file_menu = Menu(main_menu)
main_menu.add_cascade(label="Aphabet", menu=file_menu)
file_menu.add_command(label="English text", command= w_open_ing)
file_menu.add_command(label="Russian text", command= w_open_rus)
file_menu.add_command(label="Save file", command=save_file)
file_menu.add_command(label="Cleaning", command=clear_text)
file_menu.add_command(label="Exit", command=close_win)
txt = Text(tk, width=72,height=10,font="Arial 12",wrap=WORD)
txt.pack()
tk.mainloop()

Преимущества

  • Программа написана на Python, что упрощает ее использование в BigARTM и Gensim.
  • Учитывает разницу русских букв «ё» и «е».
  • Имеет графический интерфейс и при этом «распространяет свободно».

Автор: SomeOneWhoCares

Источник

Поделиться

* - обязательные к заполнению поля