@termdock/twlint 1.1.0 → 1.2.0
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/dist/core/dictionary-manager.d.ts +1 -1
- package/dist/core/dictionary-manager.d.ts.map +1 -1
- package/dist/core/dictionary-manager.js +76 -24
- package/dist/core/dictionary-manager.js.map +1 -1
- package/dist/dictionaries/academic.json +1 -1
- package/dist/dictionaries/ai-emerging-tech.json +1 -1
- package/dist/dictionaries/business-finance.json +1 -1
- package/dist/dictionaries/core.json +386 -2
- package/dist/dictionaries/hardware-3c.json +1 -1
- package/dist/dictionaries/index.json +4 -4
- package/dist/dictionaries/network-cloud.json +1 -1
- package/dist/dictionaries/operating-system.json +1 -1
- package/dist/dictionaries/social-media.json +1 -1
- package/dist/dictionaries/software-development.json +34 -2
- package/dist/dictionaries/user-interface.json +1 -1
- package/package.json +2 -2
|
@@ -6,7 +6,7 @@ export declare class DictionaryManager {
|
|
|
6
6
|
constructor(dictionariesPath?: string, maxCacheSize?: number);
|
|
7
7
|
loadDictionary(name: string): Promise<CompiledDict>;
|
|
8
8
|
findMatches(text: string): MatchResult[];
|
|
9
|
-
private
|
|
9
|
+
private addMatch;
|
|
10
10
|
scanAvailableDictionaries(): Promise<string[]>;
|
|
11
11
|
getLoadedDictionaries(): string[];
|
|
12
12
|
clearCache(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dictionary-manager.d.ts","sourceRoot":"","sources":["../../src/core/dictionary-manager.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAmB,MAAM,aAAa,CAAA;AAK7E,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,KAAK,CAAyC;IACtD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAQ;IACzC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAuB;gBAE5C,gBAAgB,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM;IActD,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAiBzD,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,EAAE;
|
|
1
|
+
{"version":3,"file":"dictionary-manager.d.ts","sourceRoot":"","sources":["../../src/core/dictionary-manager.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAmB,MAAM,aAAa,CAAA;AAK7E,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,KAAK,CAAyC;IACtD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAQ;IACzC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAuB;gBAE5C,gBAAgB,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM;IActD,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAiBzD,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,EAAE;IAgIxC,OAAO,CAAC,QAAQ;IAgBV,yBAAyB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAepD,qBAAqB,IAAI,MAAM,EAAE;IAIjC,UAAU,IAAI,IAAI;IAKlB,wBAAwB,IAAI,MAAM,EAAE;CAIrC"}
|
|
@@ -38,7 +38,6 @@ export class DictionaryManager {
|
|
|
38
38
|
}
|
|
39
39
|
findMatches(text) {
|
|
40
40
|
const allMatches = [];
|
|
41
|
-
const processedRanges = new Map(); // 改為 Map 來追蹤最佳匹配
|
|
42
41
|
for (const dict of this.cache.values()) {
|
|
43
42
|
// 先處理所有基本詞彙匹配
|
|
44
43
|
const basicTerms = Object.keys(dict.lookup).filter(term => !term.includes('_'));
|
|
@@ -51,7 +50,7 @@ export class DictionaryManager {
|
|
|
51
50
|
continue;
|
|
52
51
|
const matches = strategy.match(text, term, entry.context);
|
|
53
52
|
for (const match of matches) {
|
|
54
|
-
this.
|
|
53
|
+
this.addMatch(allMatches, match, entry, dict.metadata.name);
|
|
55
54
|
}
|
|
56
55
|
// 對於語境敏感詞彙,同時檢查其變體
|
|
57
56
|
if (entry.match_type === 'context_sensitive') {
|
|
@@ -63,42 +62,95 @@ export class DictionaryManager {
|
|
|
63
62
|
continue;
|
|
64
63
|
const variantMatches = variantStrategy.match(text, term, variantEntry.context);
|
|
65
64
|
for (const match of variantMatches) {
|
|
66
|
-
this.
|
|
65
|
+
this.addMatch(allMatches, match, variantEntry, dict.metadata.name, true);
|
|
67
66
|
}
|
|
68
67
|
}
|
|
69
68
|
}
|
|
70
69
|
}
|
|
71
70
|
}
|
|
72
|
-
//
|
|
73
|
-
|
|
71
|
+
// 1. 排序:優先長度,其次信心度,最後位置
|
|
72
|
+
// Sort logic: Longest length > Higher confidence > Earlier position
|
|
73
|
+
allMatches.sort((a, b) => {
|
|
74
|
+
const lenA = a.end - a.start;
|
|
75
|
+
const lenB = b.end - b.start;
|
|
76
|
+
if (lenA !== lenB)
|
|
77
|
+
return lenB - lenA; // Longest first
|
|
74
78
|
if (Math.abs(a.confidence - b.confidence) > 0.01) {
|
|
75
|
-
return b.confidence - a.confidence;
|
|
79
|
+
return b.confidence - a.confidence; // Higher confidence first
|
|
76
80
|
}
|
|
77
|
-
return a.start - b.start;
|
|
81
|
+
return a.start - b.start; // Earlier position first
|
|
78
82
|
});
|
|
83
|
+
// 2. 去重:過濾掉與高優先級匹配重疊的結果
|
|
84
|
+
// Deduplication using Interval Merging (O(N log N) or O(N) since already sorted by length?)
|
|
85
|
+
// Actually, simply maintaining a list of disjoint intervals is enough.
|
|
86
|
+
// Since matches are sorted by Length DESC, we iterate and check if the current match
|
|
87
|
+
// overlaps with ANY already accepted match.
|
|
88
|
+
// To do this efficiently:
|
|
89
|
+
// We can use a simple boolean array if text is short, but text can be long.
|
|
90
|
+
// Better: Maintain a sorted list of accepted intervals [start, end).
|
|
91
|
+
// For each candidate, check if it overlaps with any interval in the list.
|
|
92
|
+
// Since we process in priority order, if it doesn't overlap, we add it.
|
|
93
|
+
const acceptedMatches = [];
|
|
94
|
+
// 為了效能,我們實作一個簡單的區間檢查
|
|
95
|
+
// 由於我們可能有大量的匹配,線性掃描 acceptedMatches (O(M)) 對每個候選 (N) -> O(NM)。
|
|
96
|
+
// 如果 M 很大,這會慢。
|
|
97
|
+
// 優化:使用一個簡單的遮罩或區間樹?
|
|
98
|
+
// 考量到 JS 的 overhead,對於一般長度的文本,線性掃描可能已經足夠快。
|
|
99
|
+
// 但 Reviewer 提到效能,我們來做一個稍微好一點的檢查。
|
|
100
|
+
// 我們可以使用一個 Uint8Array 來標記被佔用的位置,如果文本長度允許 (e.g. < 1MB)。
|
|
101
|
+
// 這是 O(1) 檢查,O(L) 標記。
|
|
102
|
+
// 如果文本太長,回退到區間檢查。
|
|
103
|
+
// 假設大部分檢查的文本都在 100KB 以內。
|
|
104
|
+
if (text.length < 100000) {
|
|
105
|
+
const occupied = new Uint8Array(text.length);
|
|
106
|
+
for (const candidate of allMatches) {
|
|
107
|
+
let isOverlapping = false;
|
|
108
|
+
// Check overlap
|
|
109
|
+
for (let i = candidate.start; i < candidate.end; i++) {
|
|
110
|
+
if (occupied[i] === 1) {
|
|
111
|
+
isOverlapping = true;
|
|
112
|
+
break;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
if (!isOverlapping) {
|
|
116
|
+
acceptedMatches.push(candidate);
|
|
117
|
+
// Mark occupied
|
|
118
|
+
for (let i = candidate.start; i < candidate.end; i++) {
|
|
119
|
+
occupied[i] = 1;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
// Fallback for very long text: Interval List
|
|
126
|
+
// Keep intervals sorted by start
|
|
127
|
+
const acceptedIntervals = [];
|
|
128
|
+
for (const candidate of allMatches) {
|
|
129
|
+
// Binary search or linear scan? Linear scan is O(M).
|
|
130
|
+
// Check overlap with any accepted interval
|
|
131
|
+
const isOverlapping = acceptedIntervals.some(interval => candidate.start < interval.end && candidate.end > interval.start);
|
|
132
|
+
if (!isOverlapping) {
|
|
133
|
+
acceptedMatches.push(candidate);
|
|
134
|
+
acceptedIntervals.push({ start: candidate.start, end: candidate.end });
|
|
135
|
+
// No need to sort acceptedIntervals every time if we just use .some()
|
|
136
|
+
// But for binary search we would need to maintain order.
|
|
137
|
+
// Given the typical number of matches, .some() is acceptable here compared to strict O(N^2) if M is small.
|
|
138
|
+
// Wait, previous logic WAS O(N*M) where M is accepted count. This is same.
|
|
139
|
+
// But Uint8Array is O(N * Len).
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
// 3. 最終排序:按位置輸出,符合閱讀順序
|
|
144
|
+
return acceptedMatches.sort((a, b) => a.start - b.start);
|
|
79
145
|
}
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
const newMatch = {
|
|
146
|
+
addMatch(allMatches, match, entry, dictName, isVariant = false) {
|
|
147
|
+
allMatches.push({
|
|
83
148
|
...match,
|
|
84
149
|
replacement: entry.taiwan,
|
|
85
150
|
confidence: entry.confidence,
|
|
86
151
|
rule: `${dictName}-${entry.match_type || 'exact'}${isVariant ? '-variant' : ''}`,
|
|
87
152
|
autofix_safe: entry.autofix_safe || false
|
|
88
|
-
};
|
|
89
|
-
// 如果這個範圍還沒有匹配,或者新匹配的信心度更高
|
|
90
|
-
const existingMatch = processedRanges.get(rangeKey);
|
|
91
|
-
if (!existingMatch || newMatch.confidence > existingMatch.confidence) {
|
|
92
|
-
if (existingMatch) {
|
|
93
|
-
// 移除舊的匹配
|
|
94
|
-
const index = allMatches.indexOf(existingMatch);
|
|
95
|
-
if (index > -1) {
|
|
96
|
-
allMatches.splice(index, 1);
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
processedRanges.set(rangeKey, newMatch);
|
|
100
|
-
allMatches.push(newMatch);
|
|
101
|
-
}
|
|
153
|
+
});
|
|
102
154
|
}
|
|
103
155
|
async scanAvailableDictionaries() {
|
|
104
156
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dictionary-manager.js","sourceRoot":"","sources":["../../src/core/dictionary-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AACtC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAA;AAEnC,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAA;AACtE,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAEzC,MAAM,OAAO,iBAAiB;IACpB,KAAK,GAAG,IAAI,QAAQ,CAAuB,EAAE,CAAC,CAAA,CAAC,cAAc;IACpD,gBAAgB,CAAQ;IACxB,gBAAgB,CAAuB;IAExD,YAAY,gBAAyB,EAAE,YAAqB;QAC1D,gBAAgB;QAChB,IAAI,CAAC,KAAK,GAAG,IAAI,QAAQ,CAAuB,YAAY,IAAI,EAAE,CAAC,CAAA;QAEnE,IAAI,gBAAgB,EAAE,CAAC;YACrB,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAA;QAC1C,CAAC;aAAM,CAAC;YACN,2BAA2B;YAC3B,MAAM,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;YAC1D,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,cAAc,CAAC,CAAA;QAChE,CAAC;QACD,IAAI,CAAC,gBAAgB,GAAG,IAAI,qBAAqB,EAAE,CAAA;IACrD,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,IAAY;QAC/B,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACzB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAE,CAAA;QAC9B,CAAC;QAED,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,GAAG,IAAI,OAAO,CAAC,CAAA;YAC5D,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;YACjD,MAAM,IAAI,GAAiB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;YAE9C,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;YAC1B,OAAO,IAAI,CAAA;QACb,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,8BAA8B,IAAI,MAAM,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;QAC/E,CAAC;IACH,CAAC;IAED,WAAW,CAAC,IAAY;QACtB,MAAM,UAAU,GAAkB,EAAE,CAAA;
|
|
1
|
+
{"version":3,"file":"dictionary-manager.js","sourceRoot":"","sources":["../../src/core/dictionary-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"metadata": {
|
|
3
3
|
"name": "core",
|
|
4
|
-
"version": "1.
|
|
5
|
-
"entries":
|
|
4
|
+
"version": "1.2.0",
|
|
5
|
+
"entries": 157
|
|
6
6
|
},
|
|
7
7
|
"lookup": {
|
|
8
8
|
"访问": {
|
|
@@ -4012,6 +4012,390 @@
|
|
|
4012
4012
|
"reason": "台灣檔案操作標準",
|
|
4013
4013
|
"match_type": "exact",
|
|
4014
4014
|
"autofix_safe": true
|
|
4015
|
+
},
|
|
4016
|
+
"包含": {
|
|
4017
|
+
"taiwan": "包含",
|
|
4018
|
+
"confidence": 1,
|
|
4019
|
+
"category": "fixed-term",
|
|
4020
|
+
"reason": "避免 '包' 被錯誤匹配",
|
|
4021
|
+
"match_type": "exact",
|
|
4022
|
+
"autofix_safe": false
|
|
4023
|
+
},
|
|
4024
|
+
"包含_contain": {
|
|
4025
|
+
"taiwan": "包含",
|
|
4026
|
+
"confidence": 1,
|
|
4027
|
+
"category": "fixed-term",
|
|
4028
|
+
"reason": "避免 '包' 被錯誤匹配",
|
|
4029
|
+
"match_type": "exact",
|
|
4030
|
+
"autofix_safe": false
|
|
4031
|
+
},
|
|
4032
|
+
"包括": {
|
|
4033
|
+
"taiwan": "包括",
|
|
4034
|
+
"confidence": 1,
|
|
4035
|
+
"category": "fixed-term",
|
|
4036
|
+
"reason": "避免 '包' 被錯誤匹配",
|
|
4037
|
+
"match_type": "exact",
|
|
4038
|
+
"autofix_safe": false
|
|
4039
|
+
},
|
|
4040
|
+
"包括_include": {
|
|
4041
|
+
"taiwan": "包括",
|
|
4042
|
+
"confidence": 1,
|
|
4043
|
+
"category": "fixed-term",
|
|
4044
|
+
"reason": "避免 '包' 被錯誤匹配",
|
|
4045
|
+
"match_type": "exact",
|
|
4046
|
+
"autofix_safe": false
|
|
4047
|
+
},
|
|
4048
|
+
"包装": {
|
|
4049
|
+
"taiwan": "包裝",
|
|
4050
|
+
"confidence": 1,
|
|
4051
|
+
"category": "fixed-term",
|
|
4052
|
+
"reason": "避免 '包' 被錯誤匹配",
|
|
4053
|
+
"match_type": "exact",
|
|
4054
|
+
"autofix_safe": false
|
|
4055
|
+
},
|
|
4056
|
+
"包装_packaging": {
|
|
4057
|
+
"taiwan": "包裝",
|
|
4058
|
+
"confidence": 1,
|
|
4059
|
+
"category": "fixed-term",
|
|
4060
|
+
"reason": "避免 '包' 被錯誤匹配",
|
|
4061
|
+
"match_type": "exact",
|
|
4062
|
+
"autofix_safe": false
|
|
4063
|
+
},
|
|
4064
|
+
"包裝": {
|
|
4065
|
+
"taiwan": "包裝",
|
|
4066
|
+
"confidence": 1,
|
|
4067
|
+
"category": "fixed-term",
|
|
4068
|
+
"reason": "避免 '包' 被錯誤匹配",
|
|
4069
|
+
"match_type": "exact",
|
|
4070
|
+
"autofix_safe": false
|
|
4071
|
+
},
|
|
4072
|
+
"包裝_packaging": {
|
|
4073
|
+
"taiwan": "包裝",
|
|
4074
|
+
"confidence": 1,
|
|
4075
|
+
"category": "fixed-term",
|
|
4076
|
+
"reason": "避免 '包' 被錯誤匹配",
|
|
4077
|
+
"match_type": "exact",
|
|
4078
|
+
"autofix_safe": false
|
|
4079
|
+
},
|
|
4080
|
+
"人类": {
|
|
4081
|
+
"taiwan": "人類",
|
|
4082
|
+
"confidence": 1,
|
|
4083
|
+
"category": "fixed-term",
|
|
4084
|
+
"reason": "避免 '类' 被錯誤匹配",
|
|
4085
|
+
"match_type": "exact",
|
|
4086
|
+
"autofix_safe": false
|
|
4087
|
+
},
|
|
4088
|
+
"人类_human": {
|
|
4089
|
+
"taiwan": "人類",
|
|
4090
|
+
"confidence": 1,
|
|
4091
|
+
"category": "fixed-term",
|
|
4092
|
+
"reason": "避免 '类' 被錯誤匹配",
|
|
4093
|
+
"match_type": "exact",
|
|
4094
|
+
"autofix_safe": false
|
|
4095
|
+
},
|
|
4096
|
+
"人類": {
|
|
4097
|
+
"taiwan": "人類",
|
|
4098
|
+
"confidence": 1,
|
|
4099
|
+
"category": "fixed-term",
|
|
4100
|
+
"reason": "避免 '类' 被錯誤匹配",
|
|
4101
|
+
"match_type": "exact",
|
|
4102
|
+
"autofix_safe": false
|
|
4103
|
+
},
|
|
4104
|
+
"人類_human": {
|
|
4105
|
+
"taiwan": "人類",
|
|
4106
|
+
"confidence": 1,
|
|
4107
|
+
"category": "fixed-term",
|
|
4108
|
+
"reason": "避免 '类' 被錯誤匹配",
|
|
4109
|
+
"match_type": "exact",
|
|
4110
|
+
"autofix_safe": false
|
|
4111
|
+
},
|
|
4112
|
+
"种类": {
|
|
4113
|
+
"taiwan": "種類",
|
|
4114
|
+
"confidence": 1,
|
|
4115
|
+
"category": "fixed-term",
|
|
4116
|
+
"reason": "避免 '类' 被錯誤匹配",
|
|
4117
|
+
"match_type": "exact",
|
|
4118
|
+
"autofix_safe": false
|
|
4119
|
+
},
|
|
4120
|
+
"种类_kind": {
|
|
4121
|
+
"taiwan": "種類",
|
|
4122
|
+
"confidence": 1,
|
|
4123
|
+
"category": "fixed-term",
|
|
4124
|
+
"reason": "避免 '类' 被錯誤匹配",
|
|
4125
|
+
"match_type": "exact",
|
|
4126
|
+
"autofix_safe": false
|
|
4127
|
+
},
|
|
4128
|
+
"種類": {
|
|
4129
|
+
"taiwan": "種類",
|
|
4130
|
+
"confidence": 1,
|
|
4131
|
+
"category": "fixed-term",
|
|
4132
|
+
"reason": "避免 '类' 被錯誤匹配",
|
|
4133
|
+
"match_type": "exact",
|
|
4134
|
+
"autofix_safe": false
|
|
4135
|
+
},
|
|
4136
|
+
"種類_kind": {
|
|
4137
|
+
"taiwan": "種類",
|
|
4138
|
+
"confidence": 1,
|
|
4139
|
+
"category": "fixed-term",
|
|
4140
|
+
"reason": "避免 '类' 被錯誤匹配",
|
|
4141
|
+
"match_type": "exact",
|
|
4142
|
+
"autofix_safe": false
|
|
4143
|
+
},
|
|
4144
|
+
"多云": {
|
|
4145
|
+
"taiwan": "多雲",
|
|
4146
|
+
"confidence": 1,
|
|
4147
|
+
"category": "fixed-term",
|
|
4148
|
+
"reason": "避免 '云' 被錯誤匹配",
|
|
4149
|
+
"match_type": "exact",
|
|
4150
|
+
"autofix_safe": false
|
|
4151
|
+
},
|
|
4152
|
+
"多云_cloudy": {
|
|
4153
|
+
"taiwan": "多雲",
|
|
4154
|
+
"confidence": 1,
|
|
4155
|
+
"category": "fixed-term",
|
|
4156
|
+
"reason": "避免 '云' 被錯誤匹配",
|
|
4157
|
+
"match_type": "exact",
|
|
4158
|
+
"autofix_safe": false
|
|
4159
|
+
},
|
|
4160
|
+
"多雲": {
|
|
4161
|
+
"taiwan": "多雲",
|
|
4162
|
+
"confidence": 1,
|
|
4163
|
+
"category": "fixed-term",
|
|
4164
|
+
"reason": "避免 '云' 被錯誤匹配",
|
|
4165
|
+
"match_type": "exact",
|
|
4166
|
+
"autofix_safe": false
|
|
4167
|
+
},
|
|
4168
|
+
"多雲_cloudy": {
|
|
4169
|
+
"taiwan": "多雲",
|
|
4170
|
+
"confidence": 1,
|
|
4171
|
+
"category": "fixed-term",
|
|
4172
|
+
"reason": "避免 '云' 被錯誤匹配",
|
|
4173
|
+
"match_type": "exact",
|
|
4174
|
+
"autofix_safe": false
|
|
4175
|
+
},
|
|
4176
|
+
"区域": {
|
|
4177
|
+
"taiwan": "區域",
|
|
4178
|
+
"confidence": 1,
|
|
4179
|
+
"category": "fixed-term",
|
|
4180
|
+
"reason": "避免 '域' 被錯誤匹配",
|
|
4181
|
+
"match_type": "exact",
|
|
4182
|
+
"autofix_safe": false
|
|
4183
|
+
},
|
|
4184
|
+
"区域_region": {
|
|
4185
|
+
"taiwan": "區域",
|
|
4186
|
+
"confidence": 1,
|
|
4187
|
+
"category": "fixed-term",
|
|
4188
|
+
"reason": "避免 '域' 被錯誤匹配",
|
|
4189
|
+
"match_type": "exact",
|
|
4190
|
+
"autofix_safe": false
|
|
4191
|
+
},
|
|
4192
|
+
"區域": {
|
|
4193
|
+
"taiwan": "區域",
|
|
4194
|
+
"confidence": 1,
|
|
4195
|
+
"category": "fixed-term",
|
|
4196
|
+
"reason": "避免 '域' 被錯誤匹配",
|
|
4197
|
+
"match_type": "exact",
|
|
4198
|
+
"autofix_safe": false
|
|
4199
|
+
},
|
|
4200
|
+
"區域_region": {
|
|
4201
|
+
"taiwan": "區域",
|
|
4202
|
+
"confidence": 1,
|
|
4203
|
+
"category": "fixed-term",
|
|
4204
|
+
"reason": "避免 '域' 被錯誤匹配",
|
|
4205
|
+
"match_type": "exact",
|
|
4206
|
+
"autofix_safe": false
|
|
4207
|
+
},
|
|
4208
|
+
"领域": {
|
|
4209
|
+
"taiwan": "領域",
|
|
4210
|
+
"confidence": 1,
|
|
4211
|
+
"category": "fixed-term",
|
|
4212
|
+
"reason": "避免 '域' 被錯誤匹配",
|
|
4213
|
+
"match_type": "exact",
|
|
4214
|
+
"autofix_safe": false
|
|
4215
|
+
},
|
|
4216
|
+
"领域_field_domain": {
|
|
4217
|
+
"taiwan": "領域",
|
|
4218
|
+
"confidence": 1,
|
|
4219
|
+
"category": "fixed-term",
|
|
4220
|
+
"reason": "避免 '域' 被錯誤匹配",
|
|
4221
|
+
"match_type": "exact",
|
|
4222
|
+
"autofix_safe": false
|
|
4223
|
+
},
|
|
4224
|
+
"領域": {
|
|
4225
|
+
"taiwan": "領域",
|
|
4226
|
+
"confidence": 1,
|
|
4227
|
+
"category": "fixed-term",
|
|
4228
|
+
"reason": "避免 '域' 被錯誤匹配",
|
|
4229
|
+
"match_type": "exact",
|
|
4230
|
+
"autofix_safe": false
|
|
4231
|
+
},
|
|
4232
|
+
"領域_field_domain": {
|
|
4233
|
+
"taiwan": "領域",
|
|
4234
|
+
"confidence": 1,
|
|
4235
|
+
"category": "fixed-term",
|
|
4236
|
+
"reason": "避免 '域' 被錯誤匹配",
|
|
4237
|
+
"match_type": "exact",
|
|
4238
|
+
"autofix_safe": false
|
|
4239
|
+
},
|
|
4240
|
+
"客栈": {
|
|
4241
|
+
"taiwan": "客棧",
|
|
4242
|
+
"confidence": 1,
|
|
4243
|
+
"category": "fixed-term",
|
|
4244
|
+
"reason": "避免 '栈' 被錯誤匹配",
|
|
4245
|
+
"match_type": "exact",
|
|
4246
|
+
"autofix_safe": false
|
|
4247
|
+
},
|
|
4248
|
+
"客栈_inn": {
|
|
4249
|
+
"taiwan": "客棧",
|
|
4250
|
+
"confidence": 1,
|
|
4251
|
+
"category": "fixed-term",
|
|
4252
|
+
"reason": "避免 '栈' 被錯誤匹配",
|
|
4253
|
+
"match_type": "exact",
|
|
4254
|
+
"autofix_safe": false
|
|
4255
|
+
},
|
|
4256
|
+
"客棧": {
|
|
4257
|
+
"taiwan": "客棧",
|
|
4258
|
+
"confidence": 1,
|
|
4259
|
+
"category": "fixed-term",
|
|
4260
|
+
"reason": "避免 '栈' 被錯誤匹配",
|
|
4261
|
+
"match_type": "exact",
|
|
4262
|
+
"autofix_safe": false
|
|
4263
|
+
},
|
|
4264
|
+
"客棧_inn": {
|
|
4265
|
+
"taiwan": "客棧",
|
|
4266
|
+
"confidence": 1,
|
|
4267
|
+
"category": "fixed-term",
|
|
4268
|
+
"reason": "避免 '栈' 被錯誤匹配",
|
|
4269
|
+
"match_type": "exact",
|
|
4270
|
+
"autofix_safe": false
|
|
4271
|
+
},
|
|
4272
|
+
"栈道": {
|
|
4273
|
+
"taiwan": "棧道",
|
|
4274
|
+
"confidence": 1,
|
|
4275
|
+
"category": "fixed-term",
|
|
4276
|
+
"reason": "避免 '栈' 被錯誤匹配",
|
|
4277
|
+
"match_type": "exact",
|
|
4278
|
+
"autofix_safe": false
|
|
4279
|
+
},
|
|
4280
|
+
"栈道_plank_road": {
|
|
4281
|
+
"taiwan": "棧道",
|
|
4282
|
+
"confidence": 1,
|
|
4283
|
+
"category": "fixed-term",
|
|
4284
|
+
"reason": "避免 '栈' 被錯誤匹配",
|
|
4285
|
+
"match_type": "exact",
|
|
4286
|
+
"autofix_safe": false
|
|
4287
|
+
},
|
|
4288
|
+
"棧道": {
|
|
4289
|
+
"taiwan": "棧道",
|
|
4290
|
+
"confidence": 1,
|
|
4291
|
+
"category": "fixed-term",
|
|
4292
|
+
"reason": "避免 '栈' 被錯誤匹配",
|
|
4293
|
+
"match_type": "exact",
|
|
4294
|
+
"autofix_safe": false
|
|
4295
|
+
},
|
|
4296
|
+
"棧道_plank_road": {
|
|
4297
|
+
"taiwan": "棧道",
|
|
4298
|
+
"confidence": 1,
|
|
4299
|
+
"category": "fixed-term",
|
|
4300
|
+
"reason": "避免 '栈' 被錯誤匹配",
|
|
4301
|
+
"match_type": "exact",
|
|
4302
|
+
"autofix_safe": false
|
|
4303
|
+
},
|
|
4304
|
+
"河流": {
|
|
4305
|
+
"taiwan": "河流",
|
|
4306
|
+
"confidence": 1,
|
|
4307
|
+
"category": "fixed-term",
|
|
4308
|
+
"reason": "避免 '流' 被錯誤匹配",
|
|
4309
|
+
"match_type": "exact",
|
|
4310
|
+
"autofix_safe": false
|
|
4311
|
+
},
|
|
4312
|
+
"河流_river": {
|
|
4313
|
+
"taiwan": "河流",
|
|
4314
|
+
"confidence": 1,
|
|
4315
|
+
"category": "fixed-term",
|
|
4316
|
+
"reason": "避免 '流' 被錯誤匹配",
|
|
4317
|
+
"match_type": "exact",
|
|
4318
|
+
"autofix_safe": false
|
|
4319
|
+
},
|
|
4320
|
+
"交流": {
|
|
4321
|
+
"taiwan": "交流",
|
|
4322
|
+
"confidence": 1,
|
|
4323
|
+
"category": "fixed-term",
|
|
4324
|
+
"reason": "避免 '流' 被錯誤匹配",
|
|
4325
|
+
"match_type": "exact",
|
|
4326
|
+
"autofix_safe": false
|
|
4327
|
+
},
|
|
4328
|
+
"交流_communicate": {
|
|
4329
|
+
"taiwan": "交流",
|
|
4330
|
+
"confidence": 1,
|
|
4331
|
+
"category": "fixed-term",
|
|
4332
|
+
"reason": "避免 '流' 被錯誤匹配",
|
|
4333
|
+
"match_type": "exact",
|
|
4334
|
+
"autofix_safe": false
|
|
4335
|
+
},
|
|
4336
|
+
"考卷": {
|
|
4337
|
+
"taiwan": "考卷",
|
|
4338
|
+
"confidence": 1,
|
|
4339
|
+
"category": "fixed-term",
|
|
4340
|
+
"reason": "避免 '卷' 被錯誤匹配",
|
|
4341
|
+
"match_type": "exact",
|
|
4342
|
+
"autofix_safe": false
|
|
4343
|
+
},
|
|
4344
|
+
"考卷_exam_paper": {
|
|
4345
|
+
"taiwan": "考卷",
|
|
4346
|
+
"confidence": 1,
|
|
4347
|
+
"category": "fixed-term",
|
|
4348
|
+
"reason": "避免 '卷' 被錯誤匹配",
|
|
4349
|
+
"match_type": "exact",
|
|
4350
|
+
"autofix_safe": false
|
|
4351
|
+
},
|
|
4352
|
+
"问卷": {
|
|
4353
|
+
"taiwan": "問卷",
|
|
4354
|
+
"confidence": 1,
|
|
4355
|
+
"category": "fixed-term",
|
|
4356
|
+
"reason": "避免 '卷' 被錯誤匹配",
|
|
4357
|
+
"match_type": "exact",
|
|
4358
|
+
"autofix_safe": false
|
|
4359
|
+
},
|
|
4360
|
+
"问卷_questionnaire": {
|
|
4361
|
+
"taiwan": "問卷",
|
|
4362
|
+
"confidence": 1,
|
|
4363
|
+
"category": "fixed-term",
|
|
4364
|
+
"reason": "避免 '卷' 被錯誤匹配",
|
|
4365
|
+
"match_type": "exact",
|
|
4366
|
+
"autofix_safe": false
|
|
4367
|
+
},
|
|
4368
|
+
"問卷": {
|
|
4369
|
+
"taiwan": "問卷",
|
|
4370
|
+
"confidence": 1,
|
|
4371
|
+
"category": "fixed-term",
|
|
4372
|
+
"reason": "避免 '卷' 被錯誤匹配",
|
|
4373
|
+
"match_type": "exact",
|
|
4374
|
+
"autofix_safe": false
|
|
4375
|
+
},
|
|
4376
|
+
"問卷_questionnaire": {
|
|
4377
|
+
"taiwan": "問卷",
|
|
4378
|
+
"confidence": 1,
|
|
4379
|
+
"category": "fixed-term",
|
|
4380
|
+
"reason": "避免 '卷' 被錯誤匹配",
|
|
4381
|
+
"match_type": "exact",
|
|
4382
|
+
"autofix_safe": false
|
|
4383
|
+
},
|
|
4384
|
+
"土堆": {
|
|
4385
|
+
"taiwan": "土堆",
|
|
4386
|
+
"confidence": 1,
|
|
4387
|
+
"category": "fixed-term",
|
|
4388
|
+
"reason": "避免 '堆' 被錯誤匹配",
|
|
4389
|
+
"match_type": "exact",
|
|
4390
|
+
"autofix_safe": false
|
|
4391
|
+
},
|
|
4392
|
+
"土堆_mound": {
|
|
4393
|
+
"taiwan": "土堆",
|
|
4394
|
+
"confidence": 1,
|
|
4395
|
+
"category": "fixed-term",
|
|
4396
|
+
"reason": "避免 '堆' 被錯誤匹配",
|
|
4397
|
+
"match_type": "exact",
|
|
4398
|
+
"autofix_safe": false
|
|
4015
4399
|
}
|
|
4016
4400
|
}
|
|
4017
4401
|
}
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
"description": "核心詞庫",
|
|
27
27
|
"type": "core",
|
|
28
28
|
"required": true,
|
|
29
|
-
"entries":
|
|
29
|
+
"entries": 157
|
|
30
30
|
},
|
|
31
31
|
{
|
|
32
32
|
"name": "extended",
|
|
@@ -68,7 +68,7 @@
|
|
|
68
68
|
"description": "軟體開發",
|
|
69
69
|
"type": "domain",
|
|
70
70
|
"required": false,
|
|
71
|
-
"entries":
|
|
71
|
+
"entries": 118
|
|
72
72
|
},
|
|
73
73
|
{
|
|
74
74
|
"name": "user-interface",
|
|
@@ -78,6 +78,6 @@
|
|
|
78
78
|
"entries": 106
|
|
79
79
|
}
|
|
80
80
|
],
|
|
81
|
-
"version": "1.
|
|
82
|
-
"buildTime": "
|
|
81
|
+
"version": "1.2.0",
|
|
82
|
+
"buildTime": "2026-02-19T06:57:21.924Z"
|
|
83
83
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"metadata": {
|
|
3
3
|
"name": "software-development",
|
|
4
|
-
"version": "1.
|
|
5
|
-
"entries":
|
|
4
|
+
"version": "1.2.0",
|
|
5
|
+
"entries": 118
|
|
6
6
|
},
|
|
7
7
|
"lookup": {
|
|
8
8
|
"算法": {
|
|
@@ -1909,6 +1909,38 @@
|
|
|
1909
1909
|
"match_type": "exact",
|
|
1910
1910
|
"autofix_safe": true
|
|
1911
1911
|
},
|
|
1912
|
+
"鲁棒性": {
|
|
1913
|
+
"taiwan": "穩健性",
|
|
1914
|
+
"confidence": 0.95,
|
|
1915
|
+
"category": "mainland-term",
|
|
1916
|
+
"reason": "台灣標準意譯",
|
|
1917
|
+
"match_type": "exact",
|
|
1918
|
+
"autofix_safe": true
|
|
1919
|
+
},
|
|
1920
|
+
"鲁棒性_robustness": {
|
|
1921
|
+
"taiwan": "穩健性",
|
|
1922
|
+
"confidence": 0.95,
|
|
1923
|
+
"category": "mainland-term",
|
|
1924
|
+
"reason": "台灣標準意譯",
|
|
1925
|
+
"match_type": "exact",
|
|
1926
|
+
"autofix_safe": true
|
|
1927
|
+
},
|
|
1928
|
+
"魯棒性": {
|
|
1929
|
+
"taiwan": "穩健性",
|
|
1930
|
+
"confidence": 0.95,
|
|
1931
|
+
"category": "mainland-term",
|
|
1932
|
+
"reason": "台灣標準意譯",
|
|
1933
|
+
"match_type": "exact",
|
|
1934
|
+
"autofix_safe": true
|
|
1935
|
+
},
|
|
1936
|
+
"魯棒性_robustness": {
|
|
1937
|
+
"taiwan": "穩健性",
|
|
1938
|
+
"confidence": 0.95,
|
|
1939
|
+
"category": "mainland-term",
|
|
1940
|
+
"reason": "台灣標準意譯",
|
|
1941
|
+
"match_type": "exact",
|
|
1942
|
+
"autofix_safe": true
|
|
1943
|
+
},
|
|
1912
1944
|
"回滚": {
|
|
1913
1945
|
"taiwan": "回溯",
|
|
1914
1946
|
"confidence": 0.9,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@termdock/twlint",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.2.0",
|
|
4
4
|
"description": "A CLI tool for detecting simplified Chinese terms and suggesting Taiwan traditional alternatives",
|
|
5
5
|
"main": "dist/cli.js",
|
|
6
6
|
"type": "module",
|
|
@@ -74,4 +74,4 @@
|
|
|
74
74
|
"engines": {
|
|
75
75
|
"node": ">=18.0.0"
|
|
76
76
|
}
|
|
77
|
-
}
|
|
77
|
+
}
|