In [1]:
import pandas as pd
import numpy as np
from os import listdir
from os.path import join

import matplotlib.pyplot as plt
%matplotlib inline

In [4]:
def process_csv(file_path):
    data = pd.read_csv(file_path, encoding='utf-8')
    tokens = data.token
    positions = data.pos
    sentences = data.sentence
    norms = data.norm
    
    for word in tokens:
        if words_dict.get(word) is None:
            words_dict[word] = 0
        else:
            words_dict[word] += 1
            
    for norm in norms:
        if norms_dict.get(norm) is None:
            norms_dict[norm] = 0
        else:
            norms_dict[norm] += 1

1 - Википедия


In [2]:
markup_path = './markup'

In [3]:
words_dict = {}
norms_dict = {}

In [5]:
for folder in listdir(markup_path):
    print folder,
    folder_path = join(markup_path, folder)
    for data_file in listdir(folder_path):
        file_path = join(folder_path, data_file)
        process_csv(file_path)


( 1 2 3 4 5 6 7 8 9 A B C D E F G H I J K L M N O P Q R S T U V W X Z � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �

In [6]:
sorted_norms = sorted(norms_dict.items(), key=lambda (k, v): v, reverse=True)

In [14]:
for norm in sorted_norms[:100]:
    print norm[0],'(',norm[1],') ',


, ( 616184 )  . ( 415665 )  в ( 348254 )  и ( 238296 )  ) ( 113756 )  ( ( 113365 )  на ( 107427 )  год ( 98681 )  с ( 88870 )  « ( 88524 )  » ( 88487 )  — ( 86981 )  быть ( 70222 )  по ( 48577 )  он ( 48393 )  : ( 42121 )  который ( 42067 )  не ( 40829 )  из ( 39032 )  к ( 38120 )  что ( 35577 )  '' ( 33983 )  для ( 33668 )  `` ( 32688 )  как ( 31922 )  от ( 31050 )  один ( 31003 )  это ( 29312 )  а ( 28899 )  они ( 24988 )  также ( 24675 )  о ( 21748 )  до ( 21135 )  тот ( 20866 )  свой ( 20626 )  весь ( 20278 )  время ( 20140 )  при ( 19985 )  город ( 19972 )  являться ( 19010 )  или ( 18535 )  этот ( 18220 )  за ( 16191 )  другой ( 16065 )  ; ( 15395 )  % ( 15261 )  два ( 14826 )  но ( 14249 )  стать ( 13935 )  мочь ( 13888 )  человек ( 13423 )  после ( 13282 )  страна ( 13036 )  язык ( 12864 )  такой ( 12845 )  так ( 12540 )  иметь ( 12461 )  система ( 11755 )  то ( 11594 )  число ( 11493 )  часть ( 11329 )  у ( 11288 )  век ( 11010 )  более ( 10930 )  же ( 10504 )  область ( 10437 )  россия ( 10188 )  самый ( 9444 )  большой ( 9392 )  только ( 9243 )  её ( 8888 )  однако ( 8618 )  территория ( 8545 )  она ( 8515 )  себя ( 8434 )  под ( 8411 )  вид ( 8378 )  мир ( 7946 )  население ( 7858 )  новый ( 7758 )  имя ( 7701 )  некоторый ( 7689 )  получить ( 7559 )  работа ( 7435 )  между ( 7427 )  группа ( 7412 )  место ( 7346 )  русский ( 7138 )  война ( 7059 )  например ( 6937 )  район ( 6931 )  тысяча ( 6818 )  находиться ( 6773 )  высокий ( 6757 )  несколько ( 6679 )  есть ( 6665 )  крупный ( 6527 )  государственный ( 6484 )  составлять ( 6459 )  где ( 6367 ) 

In [31]:
x = []
for norm in sorted_norms[:100]:
    x.append(norm[1])
    
plt.figure(figsize=(16,8))
plt.xlabel(u'Ранг')
plt.ylabel(u'Частота')
plt.title(u'100 самых счастотных лексем')    
plt.plot(x,'ro')
plt.show()



In [21]:
sorted_words = sorted(words_dict.items(), key=lambda (k, v): v, reverse=True)

In [22]:
for word in sorted_words[:100]:
    print word[0],'(',word[1],') ',


, ( 616184 )  . ( 415665 )  в ( 268211 )  и ( 237184 )  ) ( 113756 )  ( ( 113365 )  на ( 98467 )  « ( 88524 )  » ( 88487 )  — ( 86981 )  с ( 74448 )  В ( 68172 )  : ( 42121 )  по ( 40504 )  не ( 40023 )  года ( 37812 )  из ( 37196 )  '' ( 33983 )  к ( 33673 )  году ( 33635 )  что ( 33163 )  `` ( 32688 )  от ( 30284 )  как ( 29911 )  для ( 29572 )  а ( 27770 )  также ( 21703 )  его ( 21624 )  был ( 20751 )  до ( 19677 )  или ( 18486 )  о ( 16640 )  ; ( 15395 )  % ( 15261 )  при ( 15127 )  за ( 14310 )  были ( 13519 )  было ( 13355 )  время ( 13291 )  он ( 13045 )  но ( 12153 )  была ( 12065 )  является ( 12012 )  то ( 11263 )  их ( 10852 )  же ( 10503 )  более ( 10261 )  так ( 9911 )  это ( 9907 )  у ( 9695 )  во ( 9477 )  На ( 8953 )  только ( 8841 )  после ( 8402 )  её ( 8395 )  России ( 7926 )  города ( 7877 )  которые ( 7856 )  По ( 7827 )  под ( 7809 )  год ( 7559 )  С ( 7513 )  области ( 7124 )  может ( 7056 )  между ( 7056 )  том ( 6939 )  который ( 6888 )  этом ( 6538 )  того ( 6500 )  со ( 6420 )  где ( 6312 )  века ( 6311 )  которых ( 6181 )  есть ( 6155 )  лет ( 5963 )  этого ( 5930 )  1 ( 5809 )  около ( 5766 )  все ( 5681 )  территории ( 5587 )  они ( 5557 )  других ( 5536 )  населения ( 5360 )  быть ( 5338 )  можно ( 5315 )  например ( 5270 )  человек ( 5212 )  СССР ( 5205 )  часть ( 5190 )  них ( 5147 )  страны ( 5059 )  После ( 4879 )  При ( 4856 )  через ( 4830 )  всех ( 4809 )  уже ( 4798 )  А. ( 4787 )  Однако ( 4681 )  несколько ( 4592 )  стал ( 4584 ) 

In [32]:
x = []
for word in sorted_words[:100]:
    x.append(word[1])
    
plt.figure(figsize=(16,8))
plt.xlabel(u'Ранг')
plt.ylabel(u'Частота')
plt.title(u'100 самых счастотных словоформ')
plt.plot(x, 'ro')
plt.show()


2 - "Война и мир"


In [33]:
war_path = './war'

In [34]:
words_dict = {}
norms_dict = {}

In [35]:
for data_file in listdir(war_path):
    print data_file,
    file_path = join(war_path, data_file)
    process_csv(file_path)


wap1.csv wap2.csv wap3.csv wap4.csv

In [36]:
sorted_norms = sorted(norms_dict.items(), key=lambda (k, v): v, reverse=True)
sorted_words = sorted(words_dict.items(), key=lambda (k, v): v, reverse=True)

In [37]:
for norm in sorted_norms[:100]:
    print norm[0],'(',norm[1],') ',


, ( 65726 )  . ( 25603 )  и ( 21379 )  он ( 14864 )  в ( 11675 )  не ( 8732 )  — ( 8176 )  что ( 7993 )  быть ( 7466 )  на ( 6784 )  с ( 6301 )  – ( 6168 )  она ( 5557 )  я ( 4545 )  весь ( 4287 )  как ( 4108 )  это ( 3994 )  который ( 3745 )  к ( 3575 )  сказать ( 3380 )  тот ( 3319 )  свой ( 3195 )  ? ( 2976 )  ! ( 2873 )  но ( 2768 )  то ( 2303 )  о ( 2203 )  этот ( 2184 )  пьер ( 2181 )  они ( 2166 )  один ( 2080 )  князь ( 2052 )  говорить ( 1985 )  ; ( 1976 )  так ( 1973 )  человек ( 1908 )  вы ( 1889 )  а ( 1842 )  же ( 1814 )  за ( 1814 )  себя ( 1796 )  по ( 1789 )  от ( 1776 )  из ( 1684 )  мочь ( 1668 )  только ( 1615 )  бы ( 1497 )  : ( 1395 )  для ( 1324 )  андрей ( 1322 )  лицо ( 1301 )  ты ( 1296 )  у ( 1287 )  наташа ( 1252 )  другой ( 1219 )  ещё ( 1153 )  знать ( 1125 )  « ( 1100 )  когда ( 1096 )  рука ( 1040 )  мы ( 1021 )  [ ( 1003 )  ] ( 1003 )  чтобы ( 996 )  » ( 993 )  время ( 968 )  да ( 909 )  теперь ( 909 )  княжна ( 900 )  глаз ( 893 )  ни ( 887 )  такой ( 839 )  ростов ( 816 )  самый ( 812 )  ) ( 807 )  думать ( 807 )  видеть ( 788 )  дело ( 785 )  или ( 785 )  марья ( 757 )  уже ( 750 )  граф ( 748 )  ( ( 746 )  мой ( 725 )  слово ( 687 )  до ( 679 )  большой ( 675 )  стать ( 669 )  хотеть ( 648 )  сам ( 638 )  москва ( 637 )  ничто ( 634 )  два ( 632 )  жизнь ( 629 )  нет ( 623 )  de ( 620 )  опять ( 617 )  день ( 613 )  тем ( 608 )  сделать ( 608 ) 

In [38]:
x = []
for norm in sorted_norms[:100]:
    x.append(norm[1])
    
plt.figure(figsize=(16,8))
plt.xlabel(u'Ранг')
plt.ylabel(u'Частота')
plt.title(u'100 самых счастотных лексем')    
plt.plot(x,'ro')
plt.show()



In [39]:
for word in sorted_words[:100]:
    print word[0],'(',word[1],') ',


, ( 65726 )  . ( 25603 )  и ( 20283 )  в ( 10185 )  не ( 8428 )  — ( 8176 )  что ( 7272 )  на ( 6445 )  – ( 6168 )  он ( 5974 )  с ( 5730 )  его ( 3857 )  как ( 3678 )  к ( 3400 )  ? ( 2976 )  ! ( 2873 )  было ( 2478 )  то ( 2236 )  это ( 2129 )  я ( 2098 )  она ( 2087 )  сказал ( 2011 )  ; ( 1976 )  но ( 1967 )  же ( 1814 )  о ( 1777 )  так ( 1767 )  от ( 1719 )  за ( 1717 )  по ( 1685 )  ее ( 1679 )  ему ( 1648 )  из ( 1604 )  был ( 1568 )  все ( 1500 )  Он ( 1500 )  бы ( 1497 )  только ( 1480 )  Пьер ( 1399 )  : ( 1395 )  а ( 1256 )  для ( 1230 )  у ( 1150 )  « ( 1100 )  И ( 1095 )  еще ( 1066 )  [ ( 1003 )  ] ( 1003 )  » ( 993 )  чтобы ( 987 )  Я ( 962 )  князь ( 945 )  того ( 915 )  него ( 906 )  была ( 901 )  В ( 899 )  были ( 892 )  ни ( 866 )  всё ( 822 )  когда ( 818 )  Наташа ( 818 )  теперь ( 816 )  себя ( 814 )  ) ( 807 )  Но ( 800 )  Андрей ( 800 )  вы ( 799 )  их ( 778 )  этого ( 770 )  том ( 769 )  быть ( 758 )  или ( 757 )  ( ( 746 )  они ( 738 )  уже ( 722 )  время ( 721 )  сказала ( 708 )  мне ( 683 )  которые ( 681 )  себе ( 672 )  Она ( 657 )  говорил ( 656 )  до ( 653 )  который ( 634 )  ты ( 620 )  de ( 612 )  ей ( 598 )  тем ( 598 )  меня ( 590 )  А ( 585 )  Да ( 584 )  этот ( 582 )  опять ( 577 )  всех ( 563 )  потому ( 545 )  своей ( 540 )  во ( 533 )  Ростов ( 531 )  чем ( 526 )  ли ( 524 ) 

In [40]:
x = []
for word in sorted_words[:100]:
    x.append(word[1])
    
plt.figure(figsize=(16,8))
plt.xlabel(u'Ранг')
plt.ylabel(u'Частота')
plt.title(u'100 самых счастотных словоформ')
plt.plot(x, 'ro')
plt.show()