Форум программистов, компьютерный форум, киберфорум
Наши страницы

Python: научные вычисления

Войти
Регистрация
Восстановить пароль
 
Anriuser
-1 / 1 / 1
Регистрация: 18.10.2013
Сообщений: 312
#1

Закон Ципфа - Python

18.12.2016, 20:12. Просмотров 468. Ответов 3
Метки нет (Все метки)

Добрый вечер. Продолжаю експерементировать. Вообщем есть реализирован первый который строит гистограму по словам в тексте.
"Измерим количество вхождений каждого слова в текст и возьмем только одно значение из каждой группы, имеющей одинаковую частоту. Расположим частоты по мере их убывания и пронумеруем, порядковый номер частоты назовем рангом частоты Выделение ключевых слов в текстовых документах ранг слова Выделение ключевых слов в текстовых документах). Наиболее часто встречающиеся слова будут иметь ранг 1, следующие за ними – 2 и так далее"
Вот результат программы: Закон Ципфа

Первое это проблема с кодировкой: На графике легенда отображается неправильно.
Если я удалю эти строки
Python
1
2
reload(sys)  
sys.setdefaultencoding('Cp1252')
Выдается ошибка при построении на русском и украинском языке. Нужно сделать тчоб график на любом языке нормально рисовался.

Второе: Нужно построить второй график, отложив по оси абсцисс частоту вхождения слова, а по оси ординат – количество слов в данной частоте.
Вот проект.
ZipfTest.rar
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.12.2016, 20:12
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Закон Ципфа (Python):

Реализовать в Лазарусе закон Ципфа - Lazarus
Помогите пожалуйста разбить текст на слова, и определить сколько раз встречается каждое слово.

задачи по темам: постоянный ток, закон Ома,несколько ЭДС в одной цепи, закон Джоуля-ленца - Электричество и магнетизм
ПОМОГИТЕ, ПОЖАЛУЙСТА, РЕШИТЬ ЗАДАЧИ ПО ФИЗИКЕ!!! Тема: Постоянный ток. Сопротивление проводника. №1. Из вертикально расположенного...

Закон сохранения момента импульса и закон сохранения энергии - Механика
Человек стоит на краю горизонтальной платформы, вращающейся по инерции вокруг неподвижной оси с угловой скоростью w. Необходимо найти...

Закон распределения - Теория вероятностей
Случайная величина Х задана функцией распределения: F(x)=\begin{cases} 0& \text{ if } x\lt 0 \\ 0.5(x-1)& \text{ if } 1\leq x\leq 3 \\...

1 Закон Кирхгофа - Электротехника
Посмотрите я правильно составил уравнение для 3 узла?

Закон кулона - Физика
Два точечных заряда на расстоянии r в определенной среде взаимодействуют с силой F. Определить параметры, дано: Заряд1-15 нКл, Заряд2-20...

3
Anriuser
-1 / 1 / 1
Регистрация: 18.10.2013
Сообщений: 312
19.12.2016, 17:56  [ТС] #2
Ну и сам код
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#!/usr/bin/python
 
import sys
import numpy as np
import pylab as pl
import sys, getopt, string
from operator import itemgetter
import matplotlib.pyplot as plt
 
my_dictionary=dict([])
sorted_dictionary=dict([])
 
 
textfile = 'up.txt'
f = open(textfile, "r")
words = f.read().split()
 
for w in words:
 
    w_no_punc = w.translate(string.maketrans("",""), string.punctuation)
    w=w_no_punc.lower()
 
    if w in my_dictionary:
        my_dictionary[w]+=1
    else:
        my_dictionary[w]=1
 
print
print "Dictionary size = ",len(my_dictionary) 
print
 
sorted_dictionary=sorted(my_dictionary.items(),key=itemgetter(1),reverse=True)
    
max_count=50
for w,c in sorted_dictionary[0:max_count]:
    print "%s\t\t: %d" % (w,c)
reload(sys)  
sys.setdefaultencoding('Cp1252')
# Histogram of top 50 words
hist_words=[x[0] for x in sorted_dictionary]
hist_count=[x[1] for x in sorted_dictionary]
plt.figure()
X = np.arange(max_count)
plt.bar(X, hist_count[0:max_count], align='center', width=0.5)
plt.xticks(X, hist_words[0:max_count],rotation='vertical')
ymax = max(hist_count[0:max_count]) + 0.1*max(hist_count[0:max_count])
plt.ylim(0, ymax)
plt.show()
# Log-log plot of all words
plt.figure()
Y = np.arange(len(my_dictionary))
plt.plot(np.log(Y),np.log(hist_count))
plt.show()
Добавлено через 1 минуту
На скрине программы справа, ето частота слова

Добавлено через 21 час 40 минут
Я так понимаю никто даже не скачал и не запускал )))
0
Anriuser
-1 / 1 / 1
Регистрация: 18.10.2013
Сообщений: 312
21.12.2016, 01:55  [ТС] #3
Помогите мне решит ьпроблему с кодировкой, второй график я уже гарисовал, просто символы украинские не отображаются.
0
Anriuser
-1 / 1 / 1
Регистрация: 18.10.2013
Сообщений: 312
24.12.2016, 18:33  [ТС] #4
Решил, если кому надо будет прогу в лс пишите
0
24.12.2016, 18:33
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.12.2016, 18:33
Привет! Вот еще темы с ответами:

Закон Вейбулла - Теория вероятностей
Среднее время безотказной работы нахожу по формуле m(t)=(\frac{1}{k})G\frac{1}{k}/{a}^{1/k} Где мне найти G(1.625)? Если точнее...

Закон Кирхгофа - Электричество и магнетизм
Посмотрите пожалуйста, правильно ли Я выбрал направления токов и правильно ли составлены уравнения.

Нормальный закон - Теория вероятностей
Диаметр втулки должен быть равен 7,5 мм. Ошибки в изготовлении нормальны с m=0 и средним квадратичным отклонением=0,04 мм. Если ошибка не...

Закон кулона - Электричество и магнетизм
Доброго времени суток. Имеется задача и пример ее решения. Не могу разобраться как именно в одном пункте решения автор получает...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru