nlp 0.2.2 → 0.2.3

Sign up to get free protection for your applications and to get access to all the features.
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