nlp 0.2.2 → 0.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/dict/rid CHANGED
@@ -159,7 +159,7 @@ PIERWOTNE
159
159
  sherry
160
160
  skubać
161
161
  ślina
162
- ślinić się
162
+ ślinić
163
163
  Smacznego
164
164
  smoczek
165
165
  śniadanie
@@ -168,7 +168,7 @@ PIERWOTNE
168
168
  sos
169
169
  spożywać
170
170
  spragniony
171
- środek spożywcze
171
+ spożywczy
172
172
  ssać
173
173
  strawić
174
174
  surowo
@@ -231,10 +231,11 @@ PIERWOTNE
231
231
  bźdić
232
232
  bździna
233
233
  cuchnący
234
- cztery litery
235
234
  defakacja
236
235
  dupa
237
- dupek dupsko enema
236
+ dupek
237
+ dupsko
238
+ enema
238
239
  fetor
239
240
  gazy
240
241
  gnić
@@ -246,7 +247,6 @@ PIERWOTNE
246
247
  gówno
247
248
  jelito
248
249
  kał
249
- kał
250
250
  kanalizacja
251
251
  kloaka
252
252
  kupa
@@ -262,7 +262,6 @@ PIERWOTNE
262
262
  nieczystość
263
263
  nieczystości
264
264
  nieczysty
265
- nieczysty
266
265
  nieumyty
267
266
  niporządek
268
267
  obleśny
@@ -270,7 +269,6 @@ PIERWOTNE
270
269
  obrzydzenie
271
270
  obstrukcja
272
271
  odbyt
273
- odbyt
274
272
  odbytnica
275
273
  odchody
276
274
  odraza
@@ -283,7 +281,7 @@ PIERWOTNE
283
281
  pośladek
284
282
  pot
285
283
  przeczyszczenie
286
- psuć się
284
+ psuć
287
285
  pupa
288
286
  robaczywy
289
287
  rozkładający się
@@ -333,7 +331,6 @@ PIERWOTNE
333
331
  amant
334
332
  amorek
335
333
  bezwstydny
336
- bezwstydny
337
334
  burdel
338
335
  chuć
339
336
  ciąża
@@ -342,8 +339,7 @@ PIERWOTNE
342
339
  cudzołóstwo
343
340
  cudzołożnik
344
341
  cudzołożyć
345
- czulić się
346
- dom publiczny
342
+ czulić
347
343
  dziwka
348
344
  ejakulat
349
345
  erotyczny
@@ -385,7 +381,7 @@ PIERWOTNE
385
381
  menstruacja
386
382
  menstruacyjny
387
383
  nagi
388
- na golasa
384
+ golas
389
385
  namiętność
390
386
  nędzić
391
387
  niedyskretny
@@ -540,7 +536,7 @@ PIERWOTNE
540
536
  stęchły
541
537
  wąchać
542
538
  wdychać
543
- woda kolońska
539
+ kolońska
544
540
  woń
545
541
  wonność
546
542
  zapach
@@ -606,13 +602,11 @@ PIERWOTNE
606
602
  głuchy
607
603
  grzechotać
608
604
  grzmot
609
- grzmot
610
605
  gwizd
611
606
  hałas
612
607
  hałaśliwy
613
608
  harmier
614
609
  huk
615
- huk
616
610
  jazgot
617
611
  klekot
618
612
  klekotać
@@ -671,7 +665,7 @@ PIERWOTNE
671
665
  wrzawa
672
666
  wrzeszczeć
673
667
  wycie
674
- wydzierać się
668
+ wydzierać
675
669
  zgrzyt
676
670
  WZROK
677
671
  aureola
@@ -697,7 +691,7 @@ PIERWOTNE
697
691
  fluorescencyjny
698
692
  gwiazda
699
693
  jasny
700
- jawić się
694
+ jawić
701
695
  jednooczny
702
696
  jutrzenka
703
697
  kamerować
@@ -732,7 +726,7 @@ PIERWOTNE
732
726
  oświetlić
733
727
  patrzyć
734
728
  pogląd
735
- pojawić się
729
+ pojawić
736
730
  półprzejrzysty
737
731
  połysk
738
732
  połyskliwy
@@ -752,7 +746,6 @@ PIERWOTNE
752
746
  rozpromieniony
753
747
  rubinowy
754
748
  rumiany
755
- rzucić okiem
756
749
  scena
757
750
  sceniczny
758
751
  skanować
@@ -782,11 +775,10 @@ PIERWOTNE
782
775
  zabarwienie
783
776
  zdjęcie
784
777
  zerknąć
785
- zerknąć
786
778
  zielony
787
779
  zobaczyć
788
780
  żółty
789
- zorza polarna
781
+ zorza
790
782
  ZIMNO
791
783
  Alaska
792
784
  arktyczny
@@ -810,7 +802,6 @@ PIERWOTNE
810
802
  północ
811
803
  północny
812
804
  schładzać
813
- skuwać lodem
814
805
  śnieg
815
806
  śnieżny
816
807
  studzić
@@ -946,7 +937,6 @@ PIERWOTNE
946
937
  schnąć
947
938
  śmierć
948
939
  spokój
949
- spokojny
950
940
  spokojny
951
941
  stagnacja
952
942
  statyczny
@@ -958,7 +948,7 @@ PIERWOTNE
958
948
  uspokoić
959
949
  uspokojenie
960
950
  usypiać
961
- wałkonić się
951
+ wałkonić
962
952
  wypoczynek
963
953
  zadowolenie
964
954
  zadowolony
@@ -977,10 +967,10 @@ PIERWOTNE
977
967
  aktywności
978
968
  badać
979
969
  badacz
980
- błąkać się
970
+ błąkać
981
971
  brnąć
982
972
  chwiać
983
- chwiać się
973
+ chwiać
984
974
  chybotać
985
975
  czynności
986
976
  drżeć
@@ -1011,7 +1001,7 @@ PIERWOTNE
1011
1001
  migrować
1012
1002
  nawigować
1013
1003
  obracać
1014
- obracać się
1004
+ obracać
1015
1005
  odległy
1016
1006
  odludzie
1017
1007
  okrążać
@@ -1054,7 +1044,7 @@ PIERWOTNE
1054
1044
  wiercić
1055
1045
  wirować
1056
1046
  włóczęga
1057
- włóczyć się
1047
+ włóczyć
1058
1048
  wrzeć
1059
1049
  wstrząsać
1060
1050
  wycieczka
@@ -1066,7 +1056,7 @@ PIERWOTNE
1066
1056
  zachwiać
1067
1057
  zakręcać
1068
1058
  zamieszać
1069
- zaokrętować się
1059
+ zaokrętować
1070
1060
  zataczać
1071
1061
  zatrząść
1072
1062
  żeglarz
@@ -1192,7 +1182,6 @@ PIERWOTNE
1192
1182
  bezustanny
1193
1183
  ciągły
1194
1184
  eon
1195
- na zawsze
1196
1185
  nieskończony
1197
1186
  nieśmiertelny
1198
1187
  nieustanny
@@ -1234,7 +1223,6 @@ PIERWOTNE
1234
1223
  gorączka
1235
1224
  gorączkowy
1236
1225
  granica
1237
- hall
1238
1226
  halucynacje
1239
1227
  haszysz
1240
1228
  hibernacja
@@ -1348,11 +1336,10 @@ PIERWOTNE
1348
1336
  wariactwo
1349
1337
  wariat
1350
1338
  wejście
1351
- we śnie
1352
1339
  wiadukt
1353
1340
  wizjoner
1354
1341
  wybrzeże
1355
- wyobrażać sobie
1342
+ wyobrażać
1356
1343
  wyobraźnia
1357
1344
  wyrocznia
1358
1345
  zaczarować
@@ -1360,7 +1347,6 @@ PIERWOTNE
1360
1347
  zahipnotyzowany
1361
1348
  zamyślenie
1362
1349
  zauroczony
1363
- zawrót głowy
1364
1350
  zwariowany
1365
1351
  NARCYZM
1366
1352
  bark
@@ -1419,13 +1405,11 @@ PIERWOTNE
1419
1405
  gdzieś
1420
1406
  koniuszek
1421
1407
  krzywa
1422
- ku
1423
1408
  kwadrat
1424
1409
  kwadratowy
1425
1410
  łuk
1426
1411
  między
1427
1412
  miejsce
1428
- na bok
1429
1413
  naprzeciw
1430
1414
  naprzód
1431
1415
  obok
@@ -1488,12 +1472,11 @@ PIERWOTNE
1488
1472
  wzdłuż
1489
1473
  za
1490
1474
  zachód
1491
- z dala
1492
1475
  zewnątrz
1493
1476
  zewnętrzny
1494
1477
  IKARIAN
1495
1478
  WSPINANIE
1496
- bujać się
1479
+ bujać
1497
1480
  dyndać
1498
1481
  góra
1499
1482
  ikaryjski
@@ -1504,10 +1487,9 @@ PIERWOTNE
1504
1487
  lot
1505
1488
  lotnik
1506
1489
  lotu
1507
- odbijać się
1490
+ odbijać
1508
1491
  pływak
1509
1492
  podnosić
1510
- podnosić się
1511
1493
  podrzucać
1512
1494
  podskakiwać
1513
1495
  powiesić
@@ -1523,12 +1505,9 @@ PIERWOTNE
1523
1505
  świt
1524
1506
  trzepotać
1525
1507
  trzepotanie
1526
- unosić się w powietrzu
1527
- w górę
1528
- w górze
1529
1508
  wschodzić
1530
- wspiąć się
1531
- wznieść się
1509
+ wspiąć
1510
+ wznieść
1532
1511
  wzrastać
1533
1512
  wzrost
1534
1513
  zbocze
@@ -1550,8 +1529,7 @@ PIERWOTNE
1550
1529
  kopiec
1551
1530
  krokiew
1552
1531
  mur
1553
- nad głową
1554
- na górze
1532
+ nad
1555
1533
  niebo
1556
1534
  obelisk
1557
1535
  piramida
@@ -1588,12 +1566,12 @@ PIERWOTNE
1588
1566
  zenit
1589
1567
  POCHODZENIE
1590
1568
  baza
1591
- chylić się
1569
+ chylić
1592
1570
  kopać
1593
1571
  nora
1594
1572
  nurkować
1595
1573
  obalać
1596
- obniżyć się
1574
+ obniżyć
1597
1575
  opadać
1598
1576
  pikować
1599
1577
  pochodzenie
@@ -1618,11 +1596,10 @@ PIERWOTNE
1618
1596
  upadły
1619
1597
  ustępować
1620
1598
  więdnąć
1621
- zachód słońca
1622
1599
  zatapiać
1623
1600
  zawalić
1624
1601
  zjazd
1625
- zniżać się
1602
+ zniżać
1626
1603
  GŁĘBOKOŚĆ
1627
1604
  dno
1628
1605
  dół
@@ -1647,7 +1624,6 @@ PIERWOTNE
1647
1624
  spadzisty
1648
1625
  szczelina
1649
1626
  tunel
1650
- w dół
1651
1627
  żleb
1652
1628
  OGIEŃ
1653
1629
  ciepło
@@ -1684,12 +1660,11 @@ PIERWOTNE
1684
1660
  stopić
1685
1661
  świeca
1686
1662
  świeczka
1687
- tlić się
1663
+ tlić
1688
1664
  tropikalny
1689
1665
  tropiki
1690
1666
  udar
1691
1667
  węgiel
1692
- w ogniu
1693
1668
  wybuch
1694
1669
  wybuchnąć
1695
1670
  wzniecać
@@ -1712,7 +1687,7 @@ PIERWOTNE
1712
1687
  jezioro
1713
1688
  kapać
1714
1689
  kąpiel
1715
- lać się
1690
+ lać
1716
1691
  mech
1717
1692
  moczyć
1718
1693
  mokro
@@ -1795,7 +1770,7 @@ WTORNE
1795
1770
  determiować
1796
1771
  dlaczego
1797
1772
  doktryna
1798
- domyślać się
1773
+ domyślać
1799
1774
  dowieść
1800
1775
  dowód
1801
1776
  dowodzić
@@ -1863,7 +1838,6 @@ WTORNE
1863
1838
  powodować
1864
1839
  poza tym
1865
1840
  prawda
1866
- prawdobodobne
1867
1841
  prawdobodobny
1868
1842
  prawdziwy
1869
1843
  prawie
@@ -1897,7 +1871,7 @@ WTORNE
1897
1871
  sądzić
1898
1872
  schemat
1899
1873
  selekcjonować
1900
- skłaniać się
1874
+ skłaniać
1901
1875
  skupiać
1902
1876
  sprawdzać
1903
1877
  stwierdzać
@@ -1905,7 +1879,7 @@ WTORNE
1905
1879
  temat
1906
1880
  teoretycznie
1907
1881
  teoria
1908
- uczyć się
1882
+ uczyć
1909
1883
  udowadniać
1910
1884
  uogólniać
1911
1885
  urozmaicenie
@@ -1921,16 +1895,15 @@ WTORNE
1921
1895
  właściwość
1922
1896
  wnioskować
1923
1897
  wszechstronny
1924
- wyballać
1925
1898
  wybierać
1926
1899
  wybór
1927
1900
  wyrazisty
1928
1901
  wyraźny
1929
1902
  wywoływać
1930
1903
  wyznaczać
1931
- zaliczać się
1904
+ zaliczać
1932
1905
  zamiar
1933
- zastanawiać się
1906
+ zastanawiać
1934
1907
  zdecydować
1935
1908
  zgadywać
1936
1909
  zmierzać
@@ -2068,8 +2041,8 @@ WTORNE
2068
2041
  świadczyć
2069
2042
  sygnał
2070
2043
  szczodry
2071
- targować się
2072
- tłumaczyć się
2044
+ targować
2045
+ tłumaczyć
2073
2046
  towarzyski
2074
2047
  towarzyszyć
2075
2048
  traktować
@@ -2081,7 +2054,7 @@ WTORNE
2081
2054
  ułaskawiać
2082
2055
  umowa
2083
2056
  umożliwić
2084
- upewniać się
2057
+ upewniać
2085
2058
  uratować
2086
2059
  uwaga
2087
2060
  uzgodnić
@@ -2117,10 +2090,10 @@ WTORNE
2117
2090
  zatwierdzić
2118
2091
  zdolny
2119
2092
  zezwolenie
2120
- zgadzać się
2093
+ zgadzać
2121
2094
  zgoda
2122
2095
  zobowiązanie
2123
- zwierzać się
2096
+ zwierzać
2124
2097
  ZACHOWANIE_INSTRUMENTALNE
2125
2098
  aplikacja
2126
2099
  architekt
@@ -2195,7 +2168,7 @@ WTORNE
2195
2168
  pochłaniać
2196
2169
  poprawiać
2197
2170
  posiadać
2198
- pozbywać się
2171
+ pozbywać
2199
2172
  pożytek
2200
2173
  praca
2201
2174
  pracochłonny
@@ -2322,7 +2295,7 @@ WTORNE
2322
2295
  odmówić
2323
2296
  ogradzać
2324
2297
  ograniczać
2325
- opierać się
2298
+ opierać
2326
2299
  opór
2327
2300
  oprócz
2328
2301
  penitencjarny
@@ -2465,12 +2438,10 @@ WTORNE
2465
2438
  długookresowy
2466
2439
  długoterminowy
2467
2440
  długowieczność
2468
- do
2469
2441
  dzisiaj
2470
2442
  efemeryczny
2471
2443
  godzina
2472
2444
  ilekroć
2473
- jeszcze raz
2474
2445
  już
2475
2446
  kiedy
2476
2447
  kiedykolwiek
@@ -2482,7 +2453,6 @@ WTORNE
2482
2453
  minuta
2483
2454
  moment
2484
2455
  nagły
2485
- na pół etatu
2486
2456
  następnie
2487
2457
  natychmiast
2488
2458
  natychmiastowy
@@ -2521,8 +2491,8 @@ WTORNE
2521
2491
  cenić
2522
2492
  cnota
2523
2493
  dostosować
2494
+ godny
2524
2495
  etyczny
2525
- godny zaufania
2526
2496
  honor
2527
2497
  honorowy
2528
2498
  klient
@@ -2569,13 +2539,11 @@ WTORNE
2569
2539
  EMOCJE
2570
2540
  POZYTYWNY_AFEKT
2571
2541
  bawić
2572
- bawić się
2573
2542
  beztroski
2574
2543
  beztrosko
2575
2544
  celebracja
2576
2545
  chichotać
2577
2546
  cieszyć
2578
- cieszyć się
2579
2547
  dowcip
2580
2548
  dreszczyk
2581
2549
  ekscytować
@@ -2664,10 +2632,10 @@ EMOCJE
2664
2632
  horror
2665
2633
  kłopot
2666
2634
  kryzys
2667
- kulić się
2635
+ kulić
2668
2636
  lęk
2669
2637
  lękliwy
2670
- martwić się
2638
+ martwić
2671
2639
  męczarnia
2672
2640
  męka
2673
2641
  nerwowy
@@ -2681,7 +2649,7 @@ EMOCJE
2681
2649
  poddenerwować
2682
2650
  poruszony
2683
2651
  przejęcie
2684
- przejmować się
2652
+ przejmować
2685
2653
  przerażać
2686
2654
  przerażający
2687
2655
  przerażenie
@@ -2705,7 +2673,7 @@ EMOCJE
2705
2673
  uraz
2706
2674
  wrzask
2707
2675
  zaczerwienić
2708
- zarumienić się
2676
+ zarumienić
2709
2677
  zdenerwowanie
2710
2678
  zdenerwowany
2711
2679
  zgroza
@@ -2754,7 +2722,7 @@ EMOCJE
2754
2722
  samotność
2755
2723
  samotny
2756
2724
  sierota
2757
- skarżyć się
2725
+ skarżyć
2758
2726
  skruszony
2759
2727
  smutek
2760
2728
  szloch
@@ -2789,7 +2757,6 @@ EMOCJE
2789
2757
  czułość
2790
2758
  czuły
2791
2759
  doceniać
2792
- do widzenia
2793
2760
  drogi
2794
2761
  flirt
2795
2762
  hołubić
@@ -2811,7 +2778,6 @@ EMOCJE
2811
2778
  obejmować
2812
2779
  objęcie
2813
2780
  ożenić
2814
- panna młoda
2815
2781
  pogłaskać
2816
2782
  poklepywać
2817
2783
  poświęcać
@@ -2822,7 +2788,7 @@ EMOCJE
2822
2788
  przyjaciel
2823
2789
  przyjaźń
2824
2790
  przyjaźnić
2825
- przymilać się
2791
+ przymilać
2826
2792
  romans
2827
2793
  rozkochać
2828
2794
  serdeczny
@@ -2841,13 +2807,12 @@ EMOCJE
2841
2807
  wdzięczny
2842
2808
  weselny
2843
2809
  witać
2844
- wyjśc za mąż
2845
2810
  zakochać
2846
- zalecać się
2811
+ zalecać
2847
2812
  zaloty
2848
2813
  zamężna
2849
2814
  zamiłowanie
2850
- zaprzyjaźnić się
2815
+ zaprzyjaźnić
2851
2816
  zażyłość
2852
2817
  znajomy
2853
2818
  żonaty
@@ -2899,7 +2864,7 @@ EMOCJE
2899
2864
  irytować
2900
2865
  karcić
2901
2866
  klaps
2902
- kłócić sie
2867
+ kłócić
2903
2868
  kłótnia
2904
2869
  konflikt
2905
2870
  kontrowersja
@@ -2917,7 +2882,7 @@ EMOCJE
2917
2882
  maltretowanie
2918
2883
  męka
2919
2884
  miecz
2920
- mocować się
2885
+ mocować
2921
2886
  morderstwo
2922
2887
  mścić
2923
2888
  mściwy
@@ -2937,9 +2902,7 @@ EMOCJE
2937
2902
  nieugięty
2938
2903
  niewdzięczność
2939
2904
  niezadowolenie
2940
- nie zgadzać się
2941
2905
  niezgoda
2942
- nie znosić
2943
2906
  niszczyć
2944
2907
  nóż
2945
2908
  obelżywy
@@ -2950,7 +2913,8 @@ EMOCJE
2950
2913
  odwet
2951
2914
  okaleczyć
2952
2915
  okłamać
2953
- okraść okrutny
2916
+ okraść
2917
+ okrutny
2954
2918
  oporny
2955
2919
  oskarżać
2956
2920
  oszczerstwo
@@ -2989,14 +2953,14 @@ EMOCJE
2989
2953
  sarkastyczny
2990
2954
  sarkazm
2991
2955
  skalp
2992
- skarżyć się
2956
+ skarżyć
2993
2957
  skradziony
2994
2958
  skrzyczeć
2995
2959
  spór
2996
2960
  sprofanować
2997
- sprzeciwiać się
2961
+ sprzeciwiać
2962
+ sprzeczać
2998
2963
  sprzeczać
2999
- sprzeczać się
3000
2964
  srogi
3001
2965
  strzał
3002
2966
  strzała
@@ -3042,7 +3006,7 @@ EMOCJE
3042
3006
  wrogość
3043
3007
  wściekły
3044
3008
  wykorzystać
3045
- wyśmiewanie się
3009
+ wyśmiewanie
3046
3010
  zabić
3047
3011
  zabijać
3048
3012
  zabity
@@ -3074,7 +3038,7 @@ EMOCJE
3074
3038
  zmagać
3075
3039
  zmiażdżyć
3076
3040
  zmora
3077
- znęcać się
3041
+ znęcać
3078
3042
  znęcanie
3079
3043
  zniecierpliwienie
3080
3044
  znieważać
@@ -3142,7 +3106,7 @@ EMOCJE
3142
3106
  chełpliwy
3143
3107
  chwała
3144
3108
  chwalić
3145
- chwalić się
3109
+ chwalić
3146
3110
  cudowny
3147
3111
  duma
3148
3112
  dumny
@@ -3172,7 +3136,7 @@ EMOCJE
3172
3136
  podziwiać
3173
3137
  pogarda
3174
3138
  prestiż
3175
- przechwalać się
3139
+ przechwalać
3176
3140
  przepych
3177
3141
  przyklaskiwać
3178
3142
  pycha
@@ -3184,7 +3148,7 @@ EMOCJE
3184
3148
  śmietanka
3185
3149
  splendor
3186
3150
  świetny
3187
- szczycić się
3151
+ szczycić
3188
3152
  szlachetny
3189
3153
  triumf
3190
3154
  tron
data/lib/analyzer.rb CHANGED
@@ -5,6 +5,7 @@ require 'word'
5
5
  require 'emoticon'
6
6
  require 'sentence'
7
7
  require "token_scanner.rb"
8
+ require "lemmatizer"
8
9
 
9
10
  $KODE = "UTF8"
10
11
 
@@ -12,7 +13,6 @@ module NLP
12
13
 
13
14
  class Analyzer
14
15
 
15
- include REXML
16
16
 
17
17
  def initialize( category_file, restore = true )
18
18
  state_file = File.expand_path(Dictionary::CACHE_DIR)
@@ -36,18 +36,21 @@ module NLP
36
36
  :words => []
37
37
  }
38
38
 
39
+
40
+
39
41
  while token = scanner.current
40
42
  word = token.lemat
41
43
 
42
44
  categories = @dictionary.find( word.gsub( /[^\w-]/, "" ) )
43
45
  unless categories.nil?
44
46
  categories.each do |category|
45
-
47
+ puts "Znalazłem słowo #{word} : #{category}"
46
48
  results[:scores][category] = results[:scores][category] + 1
49
+ results[:word_count] += 1
50
+ results[:words].push word
47
51
  end
48
52
 
49
- results[:word_count] += 1
50
- results[:words].push word
53
+
51
54
  end
52
55
 
53
56
  results[:word_total] += 1
@@ -55,10 +58,15 @@ module NLP
55
58
  end
56
59
 
57
60
  results[:sorted_scores] = results[:scores].to_a.sort_by { |result| -result[1] }
61
+ primary_sum = results[:sorted_scores].select { |result| result[0].primary? }.inject( 0 ) { |count,result| count + result[1] }
62
+ secondary_sum = results[:sorted_scores].select { |result| result[0].secondary? }.inject( 0 ) { |count,result| count + result[1] }
63
+ emotion_sum = results[:sorted_scores].select { |result| result[0].emotions? }.inject( 0 ) { |count,result| count + result[1] }
64
+
65
+
58
66
  results[:classes] = {
59
- :primary => Float(results[:sorted_scores].select { |result| result[0].primary? }.inject( 0 ) { |count,result| count + result[1] }) / results[:word_count],
60
- :secondary => Float(results[:sorted_scores].select { |result| result[0].secondary? }.inject( 0 ) { |count,result| count + result[1] }) / results[:word_count],
61
- :emotions => Float(results[:sorted_scores].select { |result| result[0].emotions? }.inject( 0 ) { |count,result| count + result[1] }) / results[:word_count]
67
+ :primary => Float(primary_sum) / results[:word_count],
68
+ :secondary => Float(secondary_sum) / results[:word_count],
69
+ :emotions => Float(emotion_sum) / results[:word_count]
62
70
  }
63
71
 
64
72
  results
@@ -66,3 +74,6 @@ module NLP
66
74
 
67
75
  end
68
76
  end
77
+
78
+ require "rid_analyzer.rb"
79
+ require "liwc_analyzer.rb"
data/lib/lemmatizer.rb ADDED
@@ -0,0 +1,108 @@
1
+ require 'takipi_web_service'
2
+ require 'rexml/document'
3
+ require 'morfeusz'
4
+
5
+ module NLP
6
+ class Lemmatizer
7
+ include REXML
8
+
9
+ def self.lematize(text,method,input_type)
10
+ if text.is_a? File
11
+ str = text.read
12
+ text.close
13
+ elsif text.is_a? String
14
+ str = text
15
+ else
16
+ raise ArgumentError, "Argument is not String or File"
17
+ end
18
+
19
+ if method === :takipi
20
+ takipi_lematize(str,input_type)
21
+ #Default lematization method is Morfeusz
22
+ else
23
+ morfeusz_lematize(str)
24
+ end
25
+
26
+ end
27
+
28
+
29
+
30
+ def self.takipi_lematize(text,method)
31
+
32
+ if method === :local
33
+
34
+ t1 = Thread.new do
35
+ `takipi -i text.txt -o output.xml -it TXT`
36
+ end
37
+
38
+ t1.join
39
+
40
+ f = File.open("output.xml","r")
41
+ doc = Document.new f
42
+ elsif method === :remote
43
+ xml = TakipiWebService.request(text)
44
+ doc = Document.new xml
45
+ else
46
+ raise ArgumentError, 'Argument is not :local or :remote'
47
+ end
48
+
49
+ parse_lematized_xml(doc)
50
+ end
51
+
52
+
53
+ def self.morfeusz_lematize(text)
54
+ temp_text = []
55
+
56
+ #simple tagger
57
+ #TODO lematizer should take block or object Tagger that defines
58
+ #how split string
59
+ text.split(/\.|!|\?/).each do |s|
60
+ sentence = Sentence.new
61
+ sentence << s.split(" ").collect{ |t|
62
+ if word = Morfeusz::Lexeme.find(t)
63
+ if word[0]
64
+ Word.new(t,word[0].base_form,"")
65
+ else
66
+ Word.new(t,"","")
67
+ end
68
+ else
69
+ Word.new(t,"","")
70
+ end
71
+ }
72
+ temp_text.push sentence
73
+ end
74
+ temp_text
75
+ end
76
+
77
+
78
+ def self.parse_lematized_xml(doc)
79
+
80
+ text = []
81
+
82
+ doc.elements.each("*/chunkList/chunk") do |chunk|
83
+ sentence = Sentence.new
84
+ tokens = []
85
+
86
+ chunk.elements.each("tok") do |tok|
87
+ word = tok.elements[1].text
88
+ lemat, inflect = ""
89
+
90
+ tok.elements.each("lex") do |lex|
91
+ if lex.has_attributes?
92
+ lemat = lex.elements[1].text
93
+ inflect = lex.elements[2].text
94
+ end
95
+ end
96
+
97
+ tokens << Word.new(word,lemat,inflect)
98
+ end
99
+
100
+ sentence << tokens
101
+ text << sentence
102
+ end
103
+ text
104
+ end
105
+
106
+
107
+ end
108
+ end
@@ -0,0 +1,11 @@
1
+ module NLP
2
+ class LIWC_Analyzer < Analyzer
3
+
4
+ def analyze
5
+
6
+ end
7
+
8
+
9
+ end
10
+
11
+ end
@@ -0,0 +1,52 @@
1
+ module NLP
2
+ class RIDAnalyzer < NLP::Analyzer
3
+
4
+ def analyze(scanner)
5
+ results = {
6
+ :word_count => 0,
7
+ :word_total => 0,
8
+ :scores => Hash.new { 0 },
9
+ :words => []
10
+ }
11
+
12
+ while token = scanner.current
13
+ word = token.lemat
14
+
15
+ categories = @dictionary.find( word.gsub( /[^\w-]/, "" ) )
16
+ unless categories.nil?
17
+ categories.each do |category|
18
+ puts "Znalazłem słowo #{word} : #{category}"
19
+ results[:scores][category] = results[:scores][category] + 1
20
+ results[:word_count] += 1
21
+ results[:words].push word
22
+ end
23
+
24
+
25
+ end
26
+
27
+ results[:word_total] += 1
28
+ scanner.next(:word)
29
+ end
30
+
31
+ results[:sorted_scores] = results[:scores].to_a.sort_by { |result| -result[1] }
32
+ p primary_sum = results[:sorted_scores].select { |result| result[0].primary? }.inject( 0 ) { |count,result| count + result[1] }
33
+ p secondary_sum = results[:sorted_scores].select { |result| result[0].secondary? }.inject( 0 ) { |count,result| count + result[1] }
34
+ p emotion_sum = results[:sorted_scores].select { |result| result[0].emotions? }.inject( 0 ) { |count,result| count + result[1] }
35
+
36
+
37
+
38
+ results[:classes] = {
39
+ :primary => Float(primary_sum) / results[:word_count],
40
+ :secondary => Float(secondary_sum) / results[:word_count],
41
+ :emotions => Float(emotion_sum) / results[:word_count]
42
+ }
43
+
44
+ results
45
+ end
46
+
47
+
48
+
49
+ end
50
+
51
+
52
+ end
@@ -1,7 +1,7 @@
1
1
  class String
2
2
  alias old_memeber []
3
3
 
4
- def ord (index)
4
+ def ordinary (index)
5
5
  self.old_memeber index
6
6
  end
7
7
 
File without changes
@@ -0,0 +1,51 @@
1
+ require 'rubygems'
2
+ require 'savon'
3
+
4
+ class TakipiWebService
5
+ URL = 'http://nlp.pwr.wroc.pl/clarin/ws/takipi/'
6
+ WSDL_URL = URL + 'takipi.wsdl'
7
+
8
+ def self.request(text)
9
+ client = Savon::Client.new WSDL_URL, :soap_endpoint => URL
10
+
11
+ # Call remote service methods
12
+ response = client.tag do |soap|
13
+ soap.body = "<text>#{text}</text><format>TXT</format><useGuesser>true</useGuesser>"
14
+ end
15
+
16
+ response = response.to_hash
17
+ token = response[:tag_response][:tag_response][:msg]
18
+ status = (response[:tag_response][:tag_response][:status]).to_i
19
+
20
+ #checking status
21
+ timeout = 60
22
+ step = 5
23
+ count = 0
24
+ loop do
25
+ break if count > timeout
26
+ if status == 1
27
+ break
28
+ elsif status == 2 or status == 3
29
+ count += 5
30
+ sleep(1)
31
+ r = client.get_status do |soap|
32
+ soap.body = "<token>#{token}</token>"
33
+ end.to_hash
34
+ status = (r[:get_status_response][:status]).to_i
35
+
36
+ end
37
+ end
38
+
39
+ #geting result
40
+
41
+ result = client.get_result do |soap|
42
+ soap.body="<token>#{token}</token>"
43
+ end
44
+
45
+ response_document = result.to_hash[:get_result_response][:tag_response][:msg]
46
+
47
+ #transforming response to well formed xml string
48
+ return "<xml><chunkList>#{response_document}</chunkList></xml>"
49
+ end
50
+ end
51
+
data/lib/token_scanner.rb CHANGED
@@ -1,23 +1,11 @@
1
1
 
2
- require 'rexml/document'
3
- require 'soap/rpc/driver'
4
-
5
2
  module NLP
6
3
  class TokenScanner
7
- include REXML
8
4
 
9
5
  attr_reader :text, :tokens
10
6
 
11
- def initialize(text, method)
12
-
13
- if method === :takipi
14
- @text = load_lemated_text(text)
15
- elsif method === :morfeusz
16
- @text = lematize_text(text)
17
- else
18
- @text = text
19
- end
20
-
7
+ def initialize(text)
8
+ @text = text
21
9
  @pos = 0
22
10
  @tokens = flatten_text(@text)
23
11
  end
@@ -43,6 +31,7 @@ module NLP
43
31
  end
44
32
  end
45
33
 
34
+
46
35
  def current
47
36
 
48
37
  if @pos == @tokens.size
@@ -53,10 +42,12 @@ module NLP
53
42
 
54
43
  end
55
44
 
45
+
56
46
  def index
57
47
  @pos
58
48
  end
59
49
 
50
+
60
51
  def end?
61
52
  @pos == tokens.size
62
53
  end
@@ -70,67 +61,5 @@ module NLP
70
61
  flattened
71
62
  end
72
63
 
73
- #Tok
74
-
75
- def load_lemated_text(text)
76
-
77
- t1 = Thread.new do
78
- `echo #{text} | takipi -i -o output.xml -it TXT`
79
- end
80
- t1.join
81
-
82
- text = []
83
- File.open("output.xml") do |f|
84
- doc = Document.new(f)
85
-
86
- doc.elements.each("*/chunkList/chunk") do |chunk|
87
- sentence = Sentence.new
88
- tokens = []
89
-
90
- chunk.elements.each("tok") do |tok|
91
- word = tok.elements[1].text
92
- lemat, inflect = ""
93
-
94
- tok.elements.each("lex") do |lex|
95
- if lex.has_attributes?
96
- lemat = lex.elements[1].text
97
- inflect = lex.elements[2].text
98
- end
99
- end
100
-
101
- tokens << Word.new(word,lemat,inflect)
102
- end
103
-
104
- sentence << tokens
105
- text << sentence
106
- end
107
- end
108
- text
109
- end
110
-
111
- def lematize_text(text)
112
- temp_text = []
113
- text.split(/\.|!|\?/).each do |s|
114
- sentence = Sentence.new
115
- sentence << s.split(" ").collect{ |t|
116
- if word = Morfeusz::Lexeme.find(t)
117
- if word[0]
118
- Word.new(t,word[0].base_form,"")
119
- else
120
- Word.new(t,"","")
121
- end
122
- else
123
- Word.new(t,"","")
124
- end
125
- }
126
- temp_text.push sentence
127
- end
128
- temp_text
129
- end
130
-
131
-
132
-
133
-
134
- end
135
-
64
+ end
136
65
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nlp
3
3
  version: !ruby/object:Gem::Version
4
- hash: 19
4
+ hash: 17
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 2
9
- - 2
10
- version: 0.2.2
9
+ - 3
10
+ version: 0.2.3
11
11
  platform: ruby
12
12
  authors:
13
13
  - knife
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-09-06 00:00:00 +02:00
18
+ date: 2010-09-18 00:00:00 +02:00
19
19
  default_executable:
20
20
  dependencies: []
21
21
 
@@ -35,15 +35,20 @@ files:
35
35
  - lib/dictionary.rb
36
36
  - lib/emoticon.rb
37
37
  - lib/inflectable.rb
38
+ - lib/lemmatizer.rb
39
+ - lib/liwc_analyzer.rb
38
40
  - lib/liwc_category.rb
39
41
  - lib/meaningable.rb
40
42
  - lib/morfeusz.rb
41
43
  - lib/nlp.rb
44
+ - lib/rid_analyzer.rb
42
45
  - lib/rid_category.rb
43
46
  - lib/sentence.rb
44
47
  - lib/stdlib/ext/array.rb
45
48
  - lib/stdlib/ext/string.rb
46
49
  - lib/stree.rb
50
+ - lib/takipi_web_service
51
+ - lib/takipi_web_service.rb
47
52
  - lib/token.rb
48
53
  - lib/token_scanner.rb
49
54
  - lib/word.rb