chengjie 4 months ago
parent
commit
5a63d2b784
4 changed files with 43 additions and 183 deletions
  1. 1 1
      src/model/yjbdc.js
  2. 42 64
      src/test/build.test.js
  3. 0 75
      src/test/test-enhanced-grammar.js
  4. 0 43
      src/test/test-love-case.js

+ 1 - 1
src/model/yjbdc.js

@@ -154,7 +154,7 @@ class YJBDC {
154 154
     static async GetWordChinese(obj) {
155 155
         try {
156 156
             // 直接在数据库层面过滤出特定单词,获取包含BookID的数据
157
-            const sql = "SELECT Word, Translate, BookID FROM kylx365_db.Words w WHERE w.Word = ? AND ((w.BookID>=111 AND w.BookID<=136) OR (w.BookID>=151 AND w.BookID<=153) OR (w.BookID>=169 AND w.BookID<=183)) ORDER BY w.BookID;";
157
+            const sql = "SELECT Word, Translate, BookID FROM kylx365_db.Words w WHERE w.Word = ? AND ((w.BookID>=111 AND w.BookID<=136) OR (w.BookID>=151 AND w.BookID<=153) OR (w.BookID>=169 AND w.BookID<=183) OR (w.BookID=100)) ORDER BY w.BookID;";
158 158
             return await query(sql, [obj.Word]);
159 159
         } catch (error) {
160 160
             console.error('获取单词信息失败:', error);

+ 42 - 64
src/test/build.test.js

@@ -5,27 +5,53 @@ import { stringUtils } from '../util/stringClass.js';
5 5
 async function runScript(){
6 6
     try {
7 7
         
8
-        const sql="SELECT * FROM kylx365_db.Words;"
8
+        const sql="SELECT Word,FinallyNum FROM kylx365_db.WordFrequency order by FinallyNum;"
9 9
         let list = await commonModel.RunSql(null,sql);
10
-        for(let i=0;i<list.length;i++){
11
-            let item=list[i];
10
+        let count=list.length;
11
+        //count=10;
12
+        for(let i=10;i<count;i++){
13
+            let word=list[i].Word;
12 14
             //console.log(i+'/'+list.length);
13 15
             //console.log(item.Translate);
14 16
 
15
-            if (item.Translate){
16
-                //let output=removeDuplicateDefinitions(item.Translate);
17
-                let output=item.Translate;
18
-                if (output.lastIndexOf(",")==output.length-1)
19
-                    output=output.substring(0,output.length-1);
20
-                //console.log(output);
21
-                if (output && item.Translate!=output){
22
-                    //console.log("input:"+item.Translate);
23
-                    //console.log("output:"+output);
24
-                    console.log("update Words set Translate='"+output+"' where ID="+item.ID+";");
25
-                    let sql="update Words set Translate='"+output+"' where ID="+item.ID+";";
26
-                    await commonModel.RunSql(null,sql);
17
+            const sql2="select JSONString from MiaoguoLiteracy where Word='"+word+"';"
18
+            let list2 = await commonModel.RunSql(null,sql2);
19
+            for(let j=0;j<list2.length;j++){
20
+                if (list2[j]){
21
+                    try{
22
+                        let json=list2[j].JSONString;
23
+                        json=JSON.parse(json);
24
+                        if (json.ENG){
25
+                            let soundmark=json.ENG.Soundmark.Eng;
26
+                            let translate=[];
27
+                            let list3=json.ENG.Paraphrase;
28
+                            for(let k=0;k<list3.length;k++){
29
+                                translate.push(list3[k].PartOfSpeech);
30
+                                translate.push(list3[k].ParaphraseList.join(""));
31
+                            }
32
+                            let translateStr=translate.join(" ");
33
+                            translateStr=stringUtils.ReplaceAllString(translateStr,",",",");
34
+                            translateStr=stringUtils.ReplaceAllString(translateStr,";;",";");
35
+                            translateStr=stringUtils.ReplaceAllString(translateStr,"  "," ");
36
+
37
+                            //console.log(word+" "+soundmark+" "+translateStr);
38
+                            let sql3="INSERT INTO `kylx365_db`.`Words` (`Word`,`BookID`,`LessonID`,`Soundmark`,`Translate`,`Sort`) VALUES ";
39
+                            sql3+=" ('"+word+"',100,0,?,"+list[i].FinallyNum+");";
40
+                            //console.log(sql3);
41
+                            await commonModel.RunSql([soundmark,translateStr],sql3);
42
+                            console.log( i +"/"+ list.length);
43
+
44
+                        }
45
+                        else
46
+                            continue;
47
+                    }
48
+                    catch(e){
49
+                        console.error(e);
50
+                        continue;
51
+                    }
27 52
                 }
28 53
             }
54
+
29 55
         }
30 56
         
31 57
         
@@ -74,52 +100,4 @@ async function runScript(){
74 100
 // 处理Promise并添加错误捕获
75 101
 runScript().catch(error => {
76 102
     console.error('Error in runScript:', error);
77
-});
78
-
79
-function removeDuplicateDefinitions(input) {
80
-    // 分割词性和释义
81
-    const segments = input.split(/([a-z]+\.)/).filter(Boolean);
82
-    const definitions = {};
83
-    let currentType = null;
84
-    let originalOrder = [];
85
-
86
-    // 解析词性和释义
87
-    for (let i = 0; i < segments.length; i++) {
88
-        const segment = segments[i].trim();
89
-        if (segment.match(/^[a-z]+\.$/)) {
90
-            // 这是词性标记
91
-            currentType = segment;
92
-            if (!definitions[currentType]) {
93
-                definitions[currentType] = [];
94
-                originalOrder.push(currentType);
95
-            }
96
-        } else if (currentType) {
97
-            // 这是释义内容
98
-            const meanings = segment.split(/\s+/).filter(Boolean);
99
-            definitions[currentType].push(...meanings);
100
-        }
101
-    }
102
-
103
-    // 去重处理
104
-    const result = [];
105
-    for (const type of originalOrder) {
106
-        if (definitions[type]) {
107
-            // 使用Set去重并保留原始顺序
108
-            const uniqueMeanings = [];
109
-            const seen = new Set();
110
-            for (const meaning of definitions[type]) {
111
-                if (!seen.has(meaning)) {
112
-                    seen.add(meaning);
113
-                    uniqueMeanings.push(meaning);
114
-                }
115
-            }
116
-            result.push(`${type}${uniqueMeanings.join(' ')}`);
117
-        }
118
-    }
119
-
120
-    return result.join(' ');
121
-}
122
-
123
-
124
-//console.log(removeDuplicateDefinitions("adj.十分喜悦的 快乐的 adj.十分喜悦的 快乐的")); 
125
-//console.log(removeDuplicateDefinitions("vi.起立 升起 上涨 起身n.上升 增加 小山 斜坡 vi.起立 升起 上涨 起身n.上升 增加 小山 斜坡")); 
103
+});

+ 0 - 75
src/test/test-enhanced-grammar.js

@@ -1,75 +0,0 @@
1
-import { enhanceFormsOfWords } from '../api/yjbdc/enhanceFormsOfWords.js';
2
-
3
-// 测试文章,包含各种语法变形
4
-const testArticle = [
5
-    "I walk to school every day. Yesterday, I walked to school. I am walking right now.",
6
-    "She likes to read books. She liked that novel. She is liking this new approach.",
7
-    "They try hard in class. They tried their best yesterday. They are trying to improve.",
8
-    "He makes delicious food. He is making dinner now. He made breakfast this morning.",
9
-    "The tall building is on the left. That building is taller than this one. It's the tallest in the city.",
10
-    "She is a nice person. She is nicer than her brother. She is the nicest in her family.",
11
-    "He is happy with his results. He is happier than before. He is the happiest person I know. He smiled happily.",
12
-    "She runs quick. She moves quickly. The quick brown fox jumps over the lazy dog."
13
-];
14
-
15
-// 创建测试JSON对象
16
-const testJsonObj = {
17
-    ArticleEnglish: testArticle
18
-};
19
-
20
-// 测试enhanceFormsOfWords函数对新增语法变形规则的识别能力
21
-console.log("测试enhanceFormsOfWords函数对新增语法变形规则的识别能力...");
22
-console.log("========================================");
23
-
24
-// 测试用例
25
-const testCases = [
26
-    // 动词过去式和现在分词
27
-    { input: "walk", expected: ["walk", "walked", "walking"] },
28
-    { input: "like", expected: ["like", "liked"] },
29
-    { input: "try", expected: ["try", "tried"] },
30
-    
31
-    // 重复一些测试,确保结果一致
32
-    { input: "walk", expected: ["walk", "walked", "walking"] },
33
-    { input: "make", expected: ["make", "making"] },
34
-    
35
-    // 形容词比较级和最高级
36
-    { input: "tall", expected: ["tall", "taller", "tallest"] },
37
-    { input: "nice", expected: ["nice", "nicer", "nicest"] },
38
-    { input: "happy", expected: ["happy", "happier", "happiest", "happily"] },
39
-    
40
-    // 副词
41
-    { input: "quick", expected: ["quick", "quickly"] },
42
-    
43
-    // 再次测试happy,确保结果一致
44
-    { input: "happy", expected: ["happy", "happier", "happiest", "happily"] },
45
-    
46
-    // 反向测试:从变形形式到基本形式
47
-    { input: "walked", expected: ["walked", "walk"] },
48
-    { input: "making", expected: ["making", "make"] },
49
-    { input: "taller", expected: ["taller", "tall"] },
50
-    { input: "happily", expected: ["happily", "happy"] }
51
-];
52
-
53
-// 运行测试
54
-testCases.forEach(test => {
55
-    console.log("----------------------------------------");
56
-    const result = enhanceFormsOfWords({ ArticleEnglish: testArticle }, test.input);
57
-    const formsFound = result.FormsOfWords || [];
58
-    
59
-    console.log(`测试输入: "${test.input}"`);
60
-    console.log(`识别到的单词形式: [${formsFound.map(w => `"${w}"`).join("")}]`);
61
-    
62
-    // 检查是否所有预期的单词变形都被识别
63
-    const allExpectedFound = test.expected.every(word => formsFound.includes(word));
64
-    
65
-    if (allExpectedFound) {
66
-        console.log("✅ 测试通过: 成功识别所有预期的单词变形");
67
-    } else {
68
-        console.log("❌ 测试失败: 有预期的单词变形未被识别");
69
-        const missing = test.expected.filter(word => !formsFound.includes(word));
70
-        console.log(`  缺少: ${missing.join(", ")}`);
71
-    }
72
-});
73
-
74
-console.log("========================================");
75
-console.log("测试完成");

+ 0 - 43
src/test/test-love-case.js

@@ -1,43 +0,0 @@
1
-import { enhanceFormsOfWords } from '../api/yjbdc/enhanceFormsOfWords.js';
2
-
3
-// 测试文章,包含love和loves
4
-const testArticle = [
5
-    "I love reading books.",
6
-    "She loves to dance.",
7
-    "Love is a powerful emotion.",
8
-    "They love each other very much."
9
-];
10
-
11
-// 创建测试JSON对象
12
-const testJsonObj = {
13
-    ArticleEnglish: testArticle
14
-};
15
-
16
-// 测试enhanceFormsOfWords函数识别'love'到'loves'的能力
17
-console.log("测试enhanceFormsOfWords函数识别'love'到'loves'的能力...");
18
-console.log("----------------------------------------");
19
-
20
-// 测试用例
21
-const input = "love";
22
-const result = enhanceFormsOfWords({ ArticleEnglish: testArticle }, input);
23
-const formsFound = result.FormsOfWords || [];
24
-
25
-console.log(`测试输入: "${input}"`);
26
-console.log(`识别到的单词形式: [${formsFound.map(w => `"${w}"`).join("")}]`);
27
-
28
-// 检查是否识别到'loves'
29
-const hasLoves = formsFound.includes("loves");
30
-// 检查是否保留了原始单词'love'
31
-const hasLove = formsFound.includes("love");
32
-
33
-if (hasLoves) {
34
-    console.log("✅ 测试通过: 成功识别'loves'作为'love'的变形");
35
-} else {
36
-    console.log("❌ 测试失败: 未能识别'loves'作为'love'的变形");
37
-}
38
-
39
-if (hasLove) {
40
-    console.log("✅ 测试通过: 成功保留原始单词'love'");
41
-} else {
42
-    console.log("❌ 测试失败: 未能保留原始单词'love'");
43
-}