nlptoolkit-morphologicalanalysis 1.0.13 → 1.0.15
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.
- package/README.md +1 -1
- package/dist/Corpus/DisambiguationCorpus.d.ts +7 -0
- package/dist/Corpus/DisambiguationCorpus.js +7 -0
- package/dist/Corpus/DisambiguationCorpus.js.map +1 -1
- package/dist/MorphologicalAnalysis/FsmMorphologicalAnalyzer.d.ts +71 -3
- package/dist/MorphologicalAnalysis/FsmMorphologicalAnalyzer.js +164 -41
- package/dist/MorphologicalAnalysis/FsmMorphologicalAnalyzer.js.map +1 -1
- package/dist/MorphologicalAnalysis/FsmParse.d.ts +9 -0
- package/dist/MorphologicalAnalysis/FsmParse.js +15 -0
- package/dist/MorphologicalAnalysis/FsmParse.js.map +1 -1
- package/dist/MorphologicalAnalysis/InflectionalGroup.js +3 -2
- package/dist/MorphologicalAnalysis/InflectionalGroup.js.map +1 -1
- package/dist/MorphologicalAnalysis/MorphologicalParse.d.ts +98 -0
- package/dist/MorphologicalAnalysis/MorphologicalParse.js +161 -10
- package/dist/MorphologicalAnalysis/MorphologicalParse.js.map +1 -1
- package/dist/MorphologicalAnalysis/MorphologicalTag.d.ts +9 -1
- package/dist/MorphologicalAnalysis/MorphologicalTag.js +8 -0
- package/dist/MorphologicalAnalysis/MorphologicalTag.js.map +1 -1
- package/dist/MorphologicalAnalysis/MorphotacticEngine.d.ts +47 -0
- package/dist/MorphologicalAnalysis/MorphotacticEngine.js +51 -1
- package/dist/MorphologicalAnalysis/MorphotacticEngine.js.map +1 -1
- package/dist/MorphologicalAnalysis/Transition.d.ts +22 -8
- package/dist/MorphologicalAnalysis/Transition.js +25 -9
- package/dist/MorphologicalAnalysis/Transition.js.map +1 -1
- package/package.json +2 -2
- package/parses/ac/314/247/304/261kla.txt +57 -3
- package/parses/ak.txt +72 -3
- package/parses/aksa.txt +40 -2
- package/parses/anla.txt +57 -3
- package/parses/azal.txt +63 -4
- package/parses/bo/314/210l.txt +53 -3
- package/parses/bul.txt +53 -3
- package/parses/cenk.txt +8 -0
- package/parses/cevapla.txt +74 -4
- package/parses/cos/314/247.txt +53 -3
- package/parses/c/314/247o/314/210k.txt +54 -3
- package/parses/c/314/247/304/261k.txt +59 -3
- package/parses/del.txt +47 -3
- package/parses/doldur.txt +47 -3
- package/parses/emlak.txt +2 -0
- package/parses/git.txt +59 -3
- package/parses/giy.txt +59 -3
- package/parses/go/314/210c/314/247.txt +59 -3
- package/parses/go/314/210ster.txt +63 -4
- package/parses/hal.txt +20 -4
- package/parses/kalp.txt +29 -4
- package/parses/kavur.txt +80 -5
- package/parses/kaydol.txt +69 -4
- package/parses/resim.txt +14 -0
- package/parses/s/304/261ska.txt +24 -0
- package/parses/ye.txt +40 -2
- package/parses/yemek.txt +6 -0
- package/parses/y/304/261ka.txt +90 -5
- package/parses/y/304/261ldo/314/210nu/314/210mu/314/210.txt +6 -0
- package/pronunciations.txt +490 -0
- package/source/Corpus/DisambiguationCorpus.ts +7 -0
- package/source/MorphologicalAnalysis/FsmMorphologicalAnalyzer.ts +171 -45
- package/source/MorphologicalAnalysis/FsmParse.ts +16 -1
- package/source/MorphologicalAnalysis/InflectionalGroup.ts +3 -2
- package/source/MorphologicalAnalysis/MorphologicalParse.ts +161 -10
- package/source/MorphologicalAnalysis/MorphologicalTag.ts +9 -1
- package/source/MorphologicalAnalysis/MorphotacticEngine.ts +51 -1
- package/source/MorphologicalAnalysis/Transition.ts +25 -9
- package/suffixes.txt +6313 -0
- package/tests/DisambiguationCorpusTest.js +14 -0
- package/tests/DisambiguationCorpusTest.js.map +1 -0
- package/tests/FiniteStateMachineTest.js +96 -0
- package/tests/FiniteStateMachineTest.js.map +1 -0
- package/tests/FiniteStateMachineTest.ts +1 -1
- package/tests/FsmMorphologicalAnalyzerTest.js +250 -0
- package/tests/FsmMorphologicalAnalyzerTest.js.map +1 -0
- package/tests/FsmMorphologicalAnalyzerTest.ts +12 -6
- package/tests/FsmParseListTest.js +100 -0
- package/tests/FsmParseListTest.js.map +1 -0
- package/tests/FsmParseTest.js +68 -0
- package/tests/FsmParseTest.js.map +1 -0
- package/tests/InflectionalGroupTest.js +86 -0
- package/tests/InflectionalGroupTest.js.map +1 -0
- package/tests/MorphologicalParseTest.js +154 -0
- package/tests/MorphologicalParseTest.js.map +1 -0
- package/tests/TransitionTest.js +184 -0
- package/tests/TransitionTest.js.map +1 -0
- package/tests/TransitionTest.ts +8 -0
- package/turkish_finite_state_machine.xml +11 -3
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
var DisambiguationCorpus_1 = require("../dist/Corpus/DisambiguationCorpus");
|
|
4
|
+
var assert = require("assert");
|
|
5
|
+
describe('DisambiguationCorpusTest', function () {
|
|
6
|
+
describe('DisambiguationCorpusTest', function () {
|
|
7
|
+
it('testCorpus', function () {
|
|
8
|
+
var corpus = new DisambiguationCorpus_1.DisambiguationCorpus("penntreebank.txt");
|
|
9
|
+
assert.strictEqual(19109, corpus.sentenceCount());
|
|
10
|
+
assert.strictEqual(170211, corpus.numberOfWords());
|
|
11
|
+
});
|
|
12
|
+
});
|
|
13
|
+
});
|
|
14
|
+
//# sourceMappingURL=DisambiguationCorpusTest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DisambiguationCorpusTest.js","sourceRoot":"","sources":["DisambiguationCorpusTest.ts"],"names":[],"mappings":";;AAAA,4EAAyE;AACzE,+BAAiC;AAEjC,QAAQ,CAAC,0BAA0B,EAAE;IACjC,QAAQ,CAAC,0BAA0B,EAAE;QACjC,EAAE,CAAC,YAAY,EAAE;YACb,IAAI,MAAM,GAAG,IAAI,2CAAoB,CAAC,kBAAkB,CAAC,CAAC;YAC1D,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC;YAClD,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
var assert = require("assert");
|
|
4
|
+
var FiniteStateMachine_1 = require("../dist/MorphologicalAnalysis/FiniteStateMachine");
|
|
5
|
+
var CounterHashMap_1 = require("nlptoolkit-datastructure/dist/CounterHashMap");
|
|
6
|
+
describe('FiniteStateMachineTest', function () {
|
|
7
|
+
describe('FiniteStateMachineTest', function () {
|
|
8
|
+
var fsm = new FiniteStateMachine_1.FiniteStateMachine("turkish_finite_state_machine.xml");
|
|
9
|
+
var stateList = fsm.getStates();
|
|
10
|
+
it('testStateCount', function () {
|
|
11
|
+
assert.strictEqual(141, stateList.length);
|
|
12
|
+
});
|
|
13
|
+
it('testStartEndStates', function () {
|
|
14
|
+
var endStateCount = 0;
|
|
15
|
+
for (var _i = 0, stateList_1 = stateList; _i < stateList_1.length; _i++) {
|
|
16
|
+
var state = stateList_1[_i];
|
|
17
|
+
if (state.isEndState()) {
|
|
18
|
+
endStateCount++;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
assert.strictEqual(37, endStateCount);
|
|
22
|
+
var posCounts = new CounterHashMap_1.CounterHashMap();
|
|
23
|
+
for (var _a = 0, stateList_2 = stateList; _a < stateList_2.length; _a++) {
|
|
24
|
+
var state = stateList_2[_a];
|
|
25
|
+
posCounts.put(state.getPos());
|
|
26
|
+
}
|
|
27
|
+
assert.strictEqual(1, posCounts.get("HEAD"));
|
|
28
|
+
assert.strictEqual(6, posCounts.get("PRON"));
|
|
29
|
+
assert.strictEqual(1, posCounts.get("PROP"));
|
|
30
|
+
assert.strictEqual(8, posCounts.get("NUM"));
|
|
31
|
+
assert.strictEqual(7, posCounts.get("ADJ"));
|
|
32
|
+
assert.strictEqual(1, posCounts.get("INTERJ"));
|
|
33
|
+
assert.strictEqual(1, posCounts.get("DET"));
|
|
34
|
+
assert.strictEqual(1, posCounts.get("ADVERB"));
|
|
35
|
+
assert.strictEqual(1, posCounts.get("QUES"));
|
|
36
|
+
assert.strictEqual(1, posCounts.get("CONJ"));
|
|
37
|
+
assert.strictEqual(26, posCounts.get("VERB"));
|
|
38
|
+
assert.strictEqual(1, posCounts.get("POSTP"));
|
|
39
|
+
assert.strictEqual(1, posCounts.get("DUP"));
|
|
40
|
+
assert.strictEqual(11, posCounts.get("NOUN"));
|
|
41
|
+
});
|
|
42
|
+
it('testTransitionCount', function () {
|
|
43
|
+
var transitionCount = 0;
|
|
44
|
+
for (var _i = 0, stateList_3 = stateList; _i < stateList_3.length; _i++) {
|
|
45
|
+
var state = stateList_3[_i];
|
|
46
|
+
transitionCount += fsm.getTransitions(state).length;
|
|
47
|
+
}
|
|
48
|
+
assert.strictEqual(779, transitionCount);
|
|
49
|
+
});
|
|
50
|
+
it('testTransitionWith', function () {
|
|
51
|
+
var transitionCounts = new CounterHashMap_1.CounterHashMap();
|
|
52
|
+
for (var _i = 0, stateList_4 = stateList; _i < stateList_4.length; _i++) {
|
|
53
|
+
var state = stateList_4[_i];
|
|
54
|
+
var transitions = fsm.getTransitions(state);
|
|
55
|
+
for (var _a = 0, transitions_1 = transitions; _a < transitions_1.length; _a++) {
|
|
56
|
+
var transition = transitions_1[_a];
|
|
57
|
+
transitionCounts.put(transition.toString());
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
var topList = transitionCounts.topN(5);
|
|
61
|
+
assert.strictEqual("0", topList[0][0]);
|
|
62
|
+
assert.strictEqual(111, topList[0][1]);
|
|
63
|
+
assert.strictEqual("lAr", topList[1][0]);
|
|
64
|
+
assert.strictEqual(37, topList[1][1]);
|
|
65
|
+
assert.strictEqual("DHr", topList[2][0]);
|
|
66
|
+
assert.strictEqual(28, topList[2][1]);
|
|
67
|
+
assert.strictEqual("Hn", topList[3][0]);
|
|
68
|
+
assert.strictEqual(24, topList[3][1]);
|
|
69
|
+
assert.strictEqual("lArH", topList[4][0]);
|
|
70
|
+
assert.strictEqual(23, topList[4][1]);
|
|
71
|
+
});
|
|
72
|
+
it('testTransitionWithName', function () {
|
|
73
|
+
var transitionCounts = new CounterHashMap_1.CounterHashMap();
|
|
74
|
+
for (var _i = 0, stateList_5 = stateList; _i < stateList_5.length; _i++) {
|
|
75
|
+
var state = stateList_5[_i];
|
|
76
|
+
var transitions = fsm.getTransitions(state);
|
|
77
|
+
for (var _a = 0, transitions_2 = transitions; _a < transitions_2.length; _a++) {
|
|
78
|
+
var transition = transitions_2[_a];
|
|
79
|
+
transitionCounts.put(transition.getWith());
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
var topList = transitionCounts.topN(5);
|
|
83
|
+
assert.strictEqual("", topList[0][0]);
|
|
84
|
+
assert.strictEqual(52, topList[0][1]);
|
|
85
|
+
assert.strictEqual("^DB+VERB+CAUS", topList[1][0]);
|
|
86
|
+
assert.strictEqual(33, topList[1][1]);
|
|
87
|
+
assert.strictEqual("^DB+VERB+PASS", topList[2][0]);
|
|
88
|
+
assert.strictEqual(31, topList[2][1]);
|
|
89
|
+
assert.strictEqual("A3PL", topList[3][0]);
|
|
90
|
+
assert.strictEqual(28, topList[3][1]);
|
|
91
|
+
assert.strictEqual("LOC", topList[4][0]);
|
|
92
|
+
assert.strictEqual(24, topList[4][1]);
|
|
93
|
+
});
|
|
94
|
+
});
|
|
95
|
+
});
|
|
96
|
+
//# sourceMappingURL=FiniteStateMachineTest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FiniteStateMachineTest.js","sourceRoot":"","sources":["FiniteStateMachineTest.ts"],"names":[],"mappings":"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"}
|
|
@@ -41,7 +41,7 @@ describe('FiniteStateMachineTest', function() {
|
|
|
41
41
|
for (let state of stateList){
|
|
42
42
|
transitionCount += fsm.getTransitions(state).length;
|
|
43
43
|
}
|
|
44
|
-
assert.strictEqual(
|
|
44
|
+
assert.strictEqual(783, transitionCount);
|
|
45
45
|
});
|
|
46
46
|
it('testTransitionWith', function() {
|
|
47
47
|
let transitionCounts = new CounterHashMap<string>();
|
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
var assert = require("assert");
|
|
4
|
+
var FsmMorphologicalAnalyzer_1 = require("../dist/MorphologicalAnalysis/FsmMorphologicalAnalyzer");
|
|
5
|
+
var State_1 = require("../dist/MorphologicalAnalysis/State");
|
|
6
|
+
var Transition_1 = require("../dist/MorphologicalAnalysis/Transition");
|
|
7
|
+
var Sentence_1 = require("nlptoolkit-corpus/dist/Sentence");
|
|
8
|
+
var fs = require("fs");
|
|
9
|
+
describe('FsmMorphologicalAnalyzerTest', function () {
|
|
10
|
+
describe('FsmMorphologicalAnalyzerTest', function () {
|
|
11
|
+
var fsm = new FsmMorphologicalAnalyzer_1.FsmMorphologicalAnalyzer();
|
|
12
|
+
it('morphologicalAnalysisGenerateAllParses', function () {
|
|
13
|
+
var testWords = ["göç", "açıkla", "yıldönümü",
|
|
14
|
+
"resim", "hal", "emlak", "git",
|
|
15
|
+
"kavur", "ye", "yemek", "ak",
|
|
16
|
+
"sıska", "yıka", "bul", "cevapla",
|
|
17
|
+
"coş", "böl", "del", "giy",
|
|
18
|
+
"kaydol", "anla", "çök", "çık",
|
|
19
|
+
"doldur", "azal", "göster", "aksa", "cenk", "kalp"];
|
|
20
|
+
for (var _i = 0, testWords_1 = testWords; _i < testWords_1.length; _i++) {
|
|
21
|
+
var testWord = testWords_1[_i];
|
|
22
|
+
var word = fsm.getDictionary().getWord(testWord);
|
|
23
|
+
var parsesExpected = [];
|
|
24
|
+
var data = fs.readFileSync("parses/" + word.getName() + ".txt", 'utf8');
|
|
25
|
+
var lines = data.split("\n");
|
|
26
|
+
for (var _a = 0, lines_1 = lines; _a < lines_1.length; _a++) {
|
|
27
|
+
var line = lines_1[_a];
|
|
28
|
+
var items = line.split(" ");
|
|
29
|
+
if (items.length == 2) {
|
|
30
|
+
parsesExpected.push(items[1].trim());
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
var parsesGenerated = fsm.generateAllParses(word, word.getName().length + 5);
|
|
34
|
+
assert.ok(parsesExpected.length == parsesGenerated.length);
|
|
35
|
+
for (var _b = 0, parsesGenerated_1 = parsesGenerated; _b < parsesGenerated_1.length; _b++) {
|
|
36
|
+
var parseGenerated = parsesGenerated_1[_b];
|
|
37
|
+
assert.ok(parsesExpected.includes(parseGenerated.toString()));
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
it('morphologicalAnalysisSpecialProperNoun', function () {
|
|
42
|
+
assert.ok(fsm.morphologicalAnalysis("TL").size() != 0);
|
|
43
|
+
assert.ok(fsm.morphologicalAnalysis("Won'u").size() != 0);
|
|
44
|
+
assert.ok(fsm.morphologicalAnalysis("Slack'in").size() != 0);
|
|
45
|
+
assert.ok(fsm.morphologicalAnalysis("SPK'ya").size() != 0);
|
|
46
|
+
assert.ok(fsm.morphologicalAnalysis("Stephen'ın").size() != 0);
|
|
47
|
+
});
|
|
48
|
+
it('morphologicalAnalysisNewWords', function () {
|
|
49
|
+
assert.ok(fsm.robustMorphologicalAnalysis("googlecılardan").size() == 6);
|
|
50
|
+
assert.ok(fsm.robustMorphologicalAnalysis("zaptıraplaştırılmayana").size() == 8);
|
|
51
|
+
assert.ok(fsm.robustMorphologicalAnalysis("abzürtleşenmiş").size() == 5);
|
|
52
|
+
assert.ok(fsm.robustMorphologicalAnalysis("vışlığından").size() == 8);
|
|
53
|
+
});
|
|
54
|
+
it('morphologicalAnalysisDataTimeNumber', function () {
|
|
55
|
+
assert.ok(fsm.morphologicalAnalysis("3/4").size() != 0);
|
|
56
|
+
assert.ok(fsm.morphologicalAnalysis("3\\/4").size() != 0);
|
|
57
|
+
assert.ok(fsm.morphologicalAnalysis("4/2/1973").size() != 0);
|
|
58
|
+
assert.ok(fsm.morphologicalAnalysis("14/2/1993").size() != 0);
|
|
59
|
+
assert.ok(fsm.morphologicalAnalysis("14/12/1933").size() != 0);
|
|
60
|
+
assert.ok(fsm.morphologicalAnalysis("6/12/1903").size() != 0);
|
|
61
|
+
assert.ok(fsm.morphologicalAnalysis("%34.5").size() != 0);
|
|
62
|
+
assert.ok(fsm.morphologicalAnalysis("%3").size() != 0);
|
|
63
|
+
assert.ok(fsm.morphologicalAnalysis("%56").size() != 0);
|
|
64
|
+
assert.ok(fsm.morphologicalAnalysis("2:3").size() != 0);
|
|
65
|
+
assert.ok(fsm.morphologicalAnalysis("12:3").size() != 0);
|
|
66
|
+
assert.ok(fsm.morphologicalAnalysis("4:23").size() != 0);
|
|
67
|
+
assert.ok(fsm.morphologicalAnalysis("11:56").size() != 0);
|
|
68
|
+
assert.ok(fsm.morphologicalAnalysis("1:2:3").size() != 0);
|
|
69
|
+
assert.ok(fsm.morphologicalAnalysis("3:12:3").size() != 0);
|
|
70
|
+
assert.ok(fsm.morphologicalAnalysis("5:4:23").size() != 0);
|
|
71
|
+
assert.ok(fsm.morphologicalAnalysis("7:11:56").size() != 0);
|
|
72
|
+
assert.ok(fsm.morphologicalAnalysis("12:2:3").size() != 0);
|
|
73
|
+
assert.ok(fsm.morphologicalAnalysis("10:12:3").size() != 0);
|
|
74
|
+
assert.ok(fsm.morphologicalAnalysis("11:4:23").size() != 0);
|
|
75
|
+
assert.ok(fsm.morphologicalAnalysis("22:11:56").size() != 0);
|
|
76
|
+
assert.ok(fsm.morphologicalAnalysis("45").size() != 0);
|
|
77
|
+
assert.ok(fsm.morphologicalAnalysis("34.23").size() != 0);
|
|
78
|
+
});
|
|
79
|
+
it('morphologicalAnalysisProperNoun', function () {
|
|
80
|
+
var dictionary = fsm.getDictionary();
|
|
81
|
+
for (var i = 0; i < 30000; i++) {
|
|
82
|
+
var word = dictionary.getWord(Math.floor(Math.random() * dictionary.size()));
|
|
83
|
+
if (word.isProperNoun()) {
|
|
84
|
+
assert.ok(fsm.morphologicalAnalysis(word.getName().toLocaleUpperCase("tr")).size() != 0);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
it('morphologicalAnalysisNounSoftenDuringSuffixation', function () {
|
|
89
|
+
var dictionary = fsm.getDictionary();
|
|
90
|
+
for (var i = 0; i < dictionary.size(); i++) {
|
|
91
|
+
var word = dictionary.getWord(i);
|
|
92
|
+
if (word.isNominal() && word.nounSoftenDuringSuffixation()) {
|
|
93
|
+
var transitionState = new State_1.State("Possessive", false, false);
|
|
94
|
+
var startState = new State_1.State("NominalRoot", true, false);
|
|
95
|
+
var transition = new Transition_1.Transition("yH", "ACC", transitionState);
|
|
96
|
+
var surfaceForm = transition.makeTransition(word, word.getName(), startState);
|
|
97
|
+
assert.ok(fsm.morphologicalAnalysis(surfaceForm).size() != 0);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
});
|
|
101
|
+
it('morphologicalAnalysisVowelAChangesToIDuringYSuffixation', function () {
|
|
102
|
+
var dictionary = fsm.getDictionary();
|
|
103
|
+
for (var i = 0; i < dictionary.size(); i++) {
|
|
104
|
+
var word = dictionary.getWord(i);
|
|
105
|
+
if (word.isVerb() && word.vowelAChangesToIDuringYSuffixation()) {
|
|
106
|
+
var transitionState = new State_1.State("VerbalStem", false, false);
|
|
107
|
+
var startState = new State_1.State("VerbalRoot", true, false);
|
|
108
|
+
var transition = new Transition_1.Transition("Hyor", "PROG1", transitionState);
|
|
109
|
+
var surfaceForm = transition.makeTransition(word, word.getName(), startState);
|
|
110
|
+
assert.ok(fsm.morphologicalAnalysis(surfaceForm).size() != 0);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
});
|
|
114
|
+
it('morphologicalAnalysisIsPortmanteau', function () {
|
|
115
|
+
var dictionary = fsm.getDictionary();
|
|
116
|
+
for (var i = 0; i < dictionary.size(); i++) {
|
|
117
|
+
var word = dictionary.getWord(i);
|
|
118
|
+
if (word.isNominal() && word.isPortmanteau() && !word.isPlural() && !word.isPortmanteauFacedVowelEllipsis()) {
|
|
119
|
+
var transitionState = new State_1.State("CompoundNounRoot", true, false);
|
|
120
|
+
var startState = new State_1.State("CompoundNounRoot", true, false);
|
|
121
|
+
var transition = new Transition_1.Transition("lArH", "A3PL+P3PL", transitionState);
|
|
122
|
+
var exceptLast2 = word.getName().substring(0, word.getName().length - 2);
|
|
123
|
+
var exceptLast = word.getName().substring(0, word.getName().length - 1);
|
|
124
|
+
var rootForm = void 0;
|
|
125
|
+
if (word.isPortmanteauFacedSoftening()) {
|
|
126
|
+
switch (word.getName().charAt(word.getName().length - 2)) {
|
|
127
|
+
case 'b':
|
|
128
|
+
rootForm = exceptLast2 + 'p';
|
|
129
|
+
break;
|
|
130
|
+
case 'c':
|
|
131
|
+
rootForm = exceptLast2 + 'ç';
|
|
132
|
+
break;
|
|
133
|
+
case 'd':
|
|
134
|
+
rootForm = exceptLast2 + 't';
|
|
135
|
+
break;
|
|
136
|
+
case 'ğ':
|
|
137
|
+
rootForm = exceptLast2 + 'k';
|
|
138
|
+
break;
|
|
139
|
+
default:
|
|
140
|
+
rootForm = exceptLast;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
else {
|
|
144
|
+
if (word.isPortmanteauEndingWithSI()) {
|
|
145
|
+
rootForm = exceptLast2;
|
|
146
|
+
}
|
|
147
|
+
else {
|
|
148
|
+
rootForm = exceptLast;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
var surfaceForm = transition.makeTransition(word, rootForm, startState);
|
|
152
|
+
assert.ok(fsm.morphologicalAnalysis(surfaceForm).size() != 0);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
});
|
|
156
|
+
it('morphologicalAnalysisNotObeysVowelHarmonyDuringAgglutination', function () {
|
|
157
|
+
var dictionary = fsm.getDictionary();
|
|
158
|
+
for (var i = 0; i < dictionary.size(); i++) {
|
|
159
|
+
var word = dictionary.getWord(i);
|
|
160
|
+
if (word.isNominal() && word.notObeysVowelHarmonyDuringAgglutination()) {
|
|
161
|
+
var transitionState = new State_1.State("Possessive", false, false);
|
|
162
|
+
var startState = new State_1.State("NominalRoot", true, false);
|
|
163
|
+
var transition = new Transition_1.Transition("yH", "ACC", transitionState);
|
|
164
|
+
var surfaceForm = transition.makeTransition(word, word.getName(), startState);
|
|
165
|
+
assert.ok(fsm.morphologicalAnalysis(surfaceForm).size() != 0);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
});
|
|
169
|
+
it('morphologicalAnalysisLastIdropsDuringSuffixation', function () {
|
|
170
|
+
var dictionary = fsm.getDictionary();
|
|
171
|
+
for (var i = 0; i < dictionary.size(); i++) {
|
|
172
|
+
var word = dictionary.getWord(i);
|
|
173
|
+
if (word.isNominal() && word.lastIdropsDuringSuffixation()) {
|
|
174
|
+
var transitionState = new State_1.State("Possessive", false, false);
|
|
175
|
+
var startState = new State_1.State("NominalRoot", true, false);
|
|
176
|
+
var transition = new Transition_1.Transition("yH", "ACC", transitionState);
|
|
177
|
+
var surfaceForm = transition.makeTransition(word, word.getName(), startState);
|
|
178
|
+
assert.ok(fsm.morphologicalAnalysis(surfaceForm).size() != 0);
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
});
|
|
182
|
+
it('morphologicalAnalysisVerbSoftenDuringSuffixation', function () {
|
|
183
|
+
var dictionary = fsm.getDictionary();
|
|
184
|
+
for (var i = 0; i < dictionary.size(); i++) {
|
|
185
|
+
var word = dictionary.getWord(i);
|
|
186
|
+
if (word.isVerb() && word.verbSoftenDuringSuffixation()) {
|
|
187
|
+
var transitionState = new State_1.State("VerbalStem", false, false);
|
|
188
|
+
var startState = new State_1.State("VerbalRoot", true, false);
|
|
189
|
+
var transition = new Transition_1.Transition("Hyor", "PROG1", transitionState);
|
|
190
|
+
var surfaceForm = transition.makeTransition(word, word.getName(), startState);
|
|
191
|
+
assert.ok(fsm.morphologicalAnalysis(surfaceForm).size() != 0);
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
});
|
|
195
|
+
it('morphologicalAnalysisDuplicatesDuringSuffixation', function () {
|
|
196
|
+
var dictionary = fsm.getDictionary();
|
|
197
|
+
for (var i = 0; i < dictionary.size(); i++) {
|
|
198
|
+
var word = dictionary.getWord(i);
|
|
199
|
+
if (word.isNominal() && word.duplicatesDuringSuffixation()) {
|
|
200
|
+
var transitionState = new State_1.State("Possessive", false, false);
|
|
201
|
+
var startState = new State_1.State("NominalRoot", true, false);
|
|
202
|
+
var transition = new Transition_1.Transition("yH", "ACC", transitionState);
|
|
203
|
+
var surfaceForm = transition.makeTransition(word, word.getName(), startState);
|
|
204
|
+
assert.ok(fsm.morphologicalAnalysis(surfaceForm).size() != 0);
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
});
|
|
208
|
+
it('morphologicalAnalysisEndingKChangesIntoG', function () {
|
|
209
|
+
var dictionary = fsm.getDictionary();
|
|
210
|
+
for (var i = 0; i < dictionary.size(); i++) {
|
|
211
|
+
var word = dictionary.getWord(i);
|
|
212
|
+
if (word.isNominal() && word.endingKChangesIntoG()) {
|
|
213
|
+
var transitionState = new State_1.State("Possessive", false, false);
|
|
214
|
+
var startState = new State_1.State("NominalRoot", true, false);
|
|
215
|
+
var transition = new Transition_1.Transition("yH", "ACC", transitionState);
|
|
216
|
+
var surfaceForm = transition.makeTransition(word, word.getName(), startState);
|
|
217
|
+
assert.ok(fsm.morphologicalAnalysis(surfaceForm).size() != 0);
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
});
|
|
221
|
+
it('morphologicalAnalysisLastIdropsDuringPassiveSuffixation', function () {
|
|
222
|
+
var dictionary = fsm.getDictionary();
|
|
223
|
+
for (var i = 0; i < dictionary.size(); i++) {
|
|
224
|
+
var word = dictionary.getWord(i);
|
|
225
|
+
if (word.isVerb() && word.lastIdropsDuringPassiveSuffixation()) {
|
|
226
|
+
var transitionState = new State_1.State("VerbalStem", false, false);
|
|
227
|
+
var startState = new State_1.State("VerbalRoot", true, false);
|
|
228
|
+
var transition = new Transition_1.Transition("Hl", "^DB+VERB+PASS", transitionState);
|
|
229
|
+
var surfaceForm = transition.makeTransition(word, word.getName(), startState);
|
|
230
|
+
assert.ok(fsm.morphologicalAnalysis(surfaceForm).size() != 0);
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
});
|
|
234
|
+
it('testReplaceWord', function () {
|
|
235
|
+
assert.strictEqual("Şvesterine söyle kazağı güzelmiş", fsm.replaceWord(new Sentence_1.Sentence("Hemşirene söyle kazağı güzelmiş"), "hemşire", "şvester").toString());
|
|
236
|
+
assert.strictEqual("Burada çok abartma var", fsm.replaceWord(new Sentence_1.Sentence("Burada çok mübalağa var"), "mübalağa", "abartma").toString());
|
|
237
|
+
assert.strictEqual("Bu bina çok kötü şekilsizleştirildi", fsm.replaceWord(new Sentence_1.Sentence("Bu bina çok kötü biçimsizleştirildi"), "biçimsizleş", "şekilsizleş").toString());
|
|
238
|
+
assert.strictEqual("Abim geçen yıl ölmüştü gibi", fsm.replaceWord(new Sentence_1.Sentence("Abim geçen yıl son yolculuğa çıkmıştı gibi"), "son yolculuğa çık", "öl").toString());
|
|
239
|
+
assert.strictEqual("Hemşirenle evlendim", fsm.replaceWord(new Sentence_1.Sentence("Kız kardeşinle evlendim"), "kız kardeş", "hemşire").toString());
|
|
240
|
+
assert.strictEqual("Dün yaptığı güreş maçında yenildi", fsm.replaceWord(new Sentence_1.Sentence("Dün yaptığı güreş maçında mağlup oldu"), "mağlup ol", "yenil").toString());
|
|
241
|
+
assert.strictEqual("Abim geçen yıl son yolculuğa çıkmıştı gibi", fsm.replaceWord(new Sentence_1.Sentence("Abim geçen yıl ölmüştü gibi"), "öl", "son yolculuğa çık").toString());
|
|
242
|
+
assert.strictEqual("Kız kardeşinle evlendim", fsm.replaceWord(new Sentence_1.Sentence("Hemşirenle evlendim"), "hemşire", "kız kardeş").toString());
|
|
243
|
+
assert.strictEqual("Dün yaptığı güreş maçında mağlup oldu", fsm.replaceWord(new Sentence_1.Sentence("Dün yaptığı güreş maçında yenildi"), "yenil", "mağlup ol").toString());
|
|
244
|
+
assert.strictEqual("Dün yaptığı güreş maçında alt oldu sanki", fsm.replaceWord(new Sentence_1.Sentence("Dün yaptığı güreş maçında mağlup oldu sanki"), "mağlup ol", "alt ol").toString());
|
|
245
|
+
assert.strictEqual("Yemin billah vermişlerdi vazoyu kırmadığına", fsm.replaceWord(new Sentence_1.Sentence("Yemin etmişlerdi vazoyu kırmadığına"), "yemin et", "yemin billah ver").toString());
|
|
246
|
+
assert.strictEqual("Yemin etmişlerdi vazoyu kırmadığına", fsm.replaceWord(new Sentence_1.Sentence("Yemin billah vermişlerdi vazoyu kırmadığına"), "yemin billah ver", "yemin et").toString());
|
|
247
|
+
});
|
|
248
|
+
});
|
|
249
|
+
});
|
|
250
|
+
//# sourceMappingURL=FsmMorphologicalAnalyzerTest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FsmMorphologicalAnalyzerTest.js","sourceRoot":"","sources":["FsmMorphologicalAnalyzerTest.ts"],"names":[],"mappings":"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"}
|
|
@@ -37,12 +37,18 @@ describe('FsmMorphologicalAnalyzerTest', function() {
|
|
|
37
37
|
});
|
|
38
38
|
|
|
39
39
|
it('morphologicalAnalysisSpecialProperNoun', function() {
|
|
40
|
-
assert.ok(fsm.morphologicalAnalysis("
|
|
41
|
-
assert.ok(fsm.morphologicalAnalysis("
|
|
42
|
-
assert.ok(fsm.morphologicalAnalysis("
|
|
43
|
-
assert.ok(fsm.morphologicalAnalysis("
|
|
44
|
-
assert.ok(fsm.morphologicalAnalysis("
|
|
45
|
-
|
|
40
|
+
assert.ok(fsm.morphologicalAnalysis("TL").size() != 0);
|
|
41
|
+
assert.ok(fsm.morphologicalAnalysis("Won'u").size() != 0);
|
|
42
|
+
assert.ok(fsm.morphologicalAnalysis("Slack'in").size() != 0);
|
|
43
|
+
assert.ok(fsm.morphologicalAnalysis("SPK'ya").size() != 0);
|
|
44
|
+
assert.ok(fsm.morphologicalAnalysis("Stephen'ın").size() != 0);
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
it('morphologicalAnalysisNewWords', function() {
|
|
48
|
+
assert.ok(fsm.robustMorphologicalAnalysis("googlecılardan").size() == 6);
|
|
49
|
+
assert.ok(fsm.robustMorphologicalAnalysis("zaptıraplaştırılmayana").size() == 8);
|
|
50
|
+
assert.ok(fsm.robustMorphologicalAnalysis("abzürtleşenmiş").size() == 5);
|
|
51
|
+
assert.ok(fsm.robustMorphologicalAnalysis("vışlığından").size() == 8);
|
|
46
52
|
});
|
|
47
53
|
|
|
48
54
|
it('morphologicalAnalysisDataTimeNumber', function() {
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
var assert = require("assert");
|
|
4
|
+
var FsmMorphologicalAnalyzer_1 = require("../dist/MorphologicalAnalysis/FsmMorphologicalAnalyzer");
|
|
5
|
+
var Word_1 = require("nlptoolkit-dictionary/dist/Dictionary/Word");
|
|
6
|
+
describe('FsmParseTest', function () {
|
|
7
|
+
describe('FsmParseTest', function () {
|
|
8
|
+
var fsm = new FsmMorphologicalAnalyzer_1.FsmMorphologicalAnalyzer();
|
|
9
|
+
var parse1 = fsm.morphologicalAnalysis("açılır");
|
|
10
|
+
var parse2 = fsm.morphologicalAnalysis("koparılarak");
|
|
11
|
+
var parse3 = fsm.morphologicalAnalysis("toplama");
|
|
12
|
+
var parse4 = fsm.morphologicalAnalysis("değerlendirmede");
|
|
13
|
+
var parse5 = fsm.morphologicalAnalysis("soruşturmasının");
|
|
14
|
+
var parse6 = fsm.morphologicalAnalysis("karşılaştırmalı");
|
|
15
|
+
var parse7 = fsm.morphologicalAnalysis("esaslarını");
|
|
16
|
+
var parse8 = fsm.morphologicalAnalysis("güçleriyle");
|
|
17
|
+
var parse9 = fsm.morphologicalAnalysis("bulmayacakları");
|
|
18
|
+
var parse10 = fsm.morphologicalAnalysis("kitabı");
|
|
19
|
+
var parse11 = fsm.morphologicalAnalysis("kitapları");
|
|
20
|
+
var parse12 = fsm.morphologicalAnalysis("o");
|
|
21
|
+
var parse13 = fsm.morphologicalAnalysis("arabası");
|
|
22
|
+
var parse14 = fsm.morphologicalAnalysis("sana");
|
|
23
|
+
var parse15 = fsm.morphologicalAnalysis("açacağını");
|
|
24
|
+
var parse16 = fsm.morphologicalAnalysis("kollarımız");
|
|
25
|
+
var parse17 = fsm.morphologicalAnalysis("yapmamızı");
|
|
26
|
+
var parse18 = fsm.morphologicalAnalysis("koşmalıyız");
|
|
27
|
+
it('testSize', function () {
|
|
28
|
+
assert.strictEqual(2, parse1.size());
|
|
29
|
+
assert.strictEqual(2, parse2.size());
|
|
30
|
+
assert.strictEqual(6, parse3.size());
|
|
31
|
+
assert.strictEqual(4, parse4.size());
|
|
32
|
+
assert.strictEqual(5, parse5.size());
|
|
33
|
+
assert.strictEqual(12, parse6.size());
|
|
34
|
+
assert.strictEqual(8, parse7.size());
|
|
35
|
+
assert.strictEqual(6, parse8.size());
|
|
36
|
+
assert.strictEqual(5, parse9.size());
|
|
37
|
+
assert.strictEqual(4, parse14.size());
|
|
38
|
+
});
|
|
39
|
+
it('testRootWords', function () {
|
|
40
|
+
assert.strictEqual("aç", parse1.rootWords());
|
|
41
|
+
assert.strictEqual("kop$kopar", parse2.rootWords());
|
|
42
|
+
assert.strictEqual("topla$toplam$toplama", parse3.rootWords());
|
|
43
|
+
assert.strictEqual("değer$değerlen$değerlendir$değerlendirme", parse4.rootWords());
|
|
44
|
+
assert.strictEqual("sor$soru$soruş$soruştur$soruşturma", parse5.rootWords());
|
|
45
|
+
assert.strictEqual("karşı$karşıla$karşılaş$karşılaştır$karşılaştırma$karşılaştırmalı", parse6.rootWords());
|
|
46
|
+
assert.strictEqual("esas", parse7.rootWords());
|
|
47
|
+
assert.strictEqual("güç", parse8.rootWords());
|
|
48
|
+
assert.strictEqual("bul", parse9.rootWords());
|
|
49
|
+
});
|
|
50
|
+
it('testGetParseWithLongestRootWord', function () {
|
|
51
|
+
assert.strictEqual("kopar", parse2.getParseWithLongestRootWord().getWord().getName());
|
|
52
|
+
assert.strictEqual("toplama", parse3.getParseWithLongestRootWord().getWord().getName());
|
|
53
|
+
assert.strictEqual("değerlendirme", parse4.getParseWithLongestRootWord().getWord().getName());
|
|
54
|
+
assert.strictEqual("soruşturma", parse5.getParseWithLongestRootWord().getWord().getName());
|
|
55
|
+
assert.strictEqual("karşılaştırmalı", parse6.getParseWithLongestRootWord().getWord().getName());
|
|
56
|
+
assert.strictEqual("aç", parse15.getParseWithLongestRootWord().getWord().getName());
|
|
57
|
+
assert.strictEqual("kol", parse16.getParseWithLongestRootWord().getWord().getName());
|
|
58
|
+
assert.strictEqual("yap", parse17.getParseWithLongestRootWord().getWord().getName());
|
|
59
|
+
assert.strictEqual("koş", parse18.getParseWithLongestRootWord().getWord().getName());
|
|
60
|
+
});
|
|
61
|
+
it('testReduceToParsesWithSameRootAndPos', function () {
|
|
62
|
+
parse2.reduceToParsesWithSameRootAndPos(new Word_1.Word("kop+VERB"));
|
|
63
|
+
assert.strictEqual(1, parse2.size());
|
|
64
|
+
parse3.reduceToParsesWithSameRootAndPos(new Word_1.Word("topla+VERB"));
|
|
65
|
+
assert.strictEqual(2, parse3.size());
|
|
66
|
+
parse6.reduceToParsesWithSameRootAndPos(new Word_1.Word("karşıla+VERB"));
|
|
67
|
+
assert.strictEqual(2, parse6.size());
|
|
68
|
+
});
|
|
69
|
+
it('testReduceToParsesWithSameRoot', function () {
|
|
70
|
+
parse2.reduceToParsesWithSameRoot("kop");
|
|
71
|
+
assert.strictEqual(1, parse2.size());
|
|
72
|
+
parse3.reduceToParsesWithSameRoot("topla");
|
|
73
|
+
assert.strictEqual(3, parse3.size());
|
|
74
|
+
parse6.reduceToParsesWithSameRoot("karşı");
|
|
75
|
+
assert.strictEqual(4, parse6.size());
|
|
76
|
+
parse7.reduceToParsesWithSameRoot("esas");
|
|
77
|
+
assert.strictEqual(8, parse7.size());
|
|
78
|
+
parse8.reduceToParsesWithSameRoot("güç");
|
|
79
|
+
assert.strictEqual(6, parse8.size());
|
|
80
|
+
});
|
|
81
|
+
it('testConstructParseListForDifferentRootWithPos', function () {
|
|
82
|
+
assert.strictEqual(1, parse1.constructParseListForDifferentRootWithPos().length);
|
|
83
|
+
assert.strictEqual(2, parse2.constructParseListForDifferentRootWithPos().length);
|
|
84
|
+
assert.strictEqual(5, parse3.constructParseListForDifferentRootWithPos().length);
|
|
85
|
+
assert.strictEqual(4, parse4.constructParseListForDifferentRootWithPos().length);
|
|
86
|
+
assert.strictEqual(5, parse5.constructParseListForDifferentRootWithPos().length);
|
|
87
|
+
assert.strictEqual(7, parse6.constructParseListForDifferentRootWithPos().length);
|
|
88
|
+
assert.strictEqual(2, parse7.constructParseListForDifferentRootWithPos().length);
|
|
89
|
+
assert.strictEqual(2, parse8.constructParseListForDifferentRootWithPos().length);
|
|
90
|
+
assert.strictEqual(1, parse9.constructParseListForDifferentRootWithPos().length);
|
|
91
|
+
});
|
|
92
|
+
it('testParsesWithoutPrefixAndSuffix', function () {
|
|
93
|
+
assert.strictEqual("P3SG+NOM$PNON+ACC", parse10.parsesWithoutPrefixAndSuffix());
|
|
94
|
+
assert.strictEqual("A3PL+P3PL+NOM$A3PL+P3SG+NOM$A3PL+PNON+ACC$A3SG+P3PL+NOM", parse11.parsesWithoutPrefixAndSuffix());
|
|
95
|
+
assert.strictEqual("DET$PRON+DEMONSP+A3SG+PNON+NOM$PRON+PERS+A3SG+PNON+NOM", parse12.parsesWithoutPrefixAndSuffix());
|
|
96
|
+
assert.strictEqual("NOUN+A3SG+P3SG+NOM$NOUN^DB+ADJ+ALMOST", parse13.parsesWithoutPrefixAndSuffix());
|
|
97
|
+
});
|
|
98
|
+
});
|
|
99
|
+
});
|
|
100
|
+
//# sourceMappingURL=FsmParseListTest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FsmParseListTest.js","sourceRoot":"","sources":["FsmParseListTest.ts"],"names":[],"mappings":"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"}
|