forked from github/codespaces-nextjs
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest-algorithm.js
More file actions
77 lines (68 loc) · 2.89 KB
/
Copy pathtest-algorithm.js
File metadata and controls
77 lines (68 loc) · 2.89 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
/**
* 算法测试脚本
* 验证余弦相似度算法的正确性
*/
import { cosineSimilarity } from './lib/similarity.js'
import { textToVector, normalizeText, tokenize } from './lib/textProcessor.js'
import { SAMPLE_TEXTS } from './lib/mockData.js'
import { searchTexts } from './lib/similarity.js'
console.log('🧪 开始测试文本相似度算法...\n')
// 测试 1: 文本处理
console.log('✅ 测试 1: 文本处理')
const testText = 'JavaScript 是一种编程语言'
console.log(`原始文本: "${testText}"`)
console.log(`规范化后: "${normalizeText(testText)}"`)
console.log(`分词: [${tokenize(testText).join(', ')}]`)
console.log(`向量: ${JSON.stringify(textToVector(testText))}`)
console.log()
// 测试 2: 相同文本的相似度应该是 1
console.log('✅ 测试 2: 相同文本相似度')
const text1 = 'React 框架'
const text2 = 'React 框架'
const similarity1 = cosineSimilarity(textToVector(text1), textToVector(text2))
console.log(`文本1: "${text1}"`)
console.log(`文本2: "${text2}"`)
console.log(`相似度: ${similarity1.toFixed(4)} (预期: 1.0000)`)
console.log()
// 测试 3: 不同文本的相似度
console.log('✅ 测试 3: 不同文本相似度')
const text3 = 'JavaScript 编程语言'
const text4 = 'Python 编程语言'
const similarity2 = cosineSimilarity(textToVector(text3), textToVector(text4))
console.log(`文本1: "${text3}"`)
console.log(`文本2: "${text4}"`)
console.log(`相似度: ${similarity2.toFixed(4)} (预期: 0.5000+ 因为共享词汇)`)
console.log()
// 测试 4: 无相关文本的相似度应该接近 0
console.log('✅ 测试 4: 无相关文本相似度')
const text5 = 'JavaScript'
const text6 = 'Python'
const similarity3 = cosineSimilarity(textToVector(text5), textToVector(text6))
console.log(`文本1: "${text5}"`)
console.log(`文本2: "${text6}"`)
console.log(`相似度: ${similarity3.toFixed(4)} (预期: 0.0000)`)
console.log()
// 测试 5: 搜索功能
console.log('✅ 测试 5: 搜索功能')
const searchQuery = 'JavaScript'
const results = searchTexts(searchQuery, SAMPLE_TEXTS)
console.log(`搜索查询: "${searchQuery}"`)
console.log(`找到 ${results.length} 条结果\n`)
results.slice(0, 3).forEach((result, index) => {
console.log(` ${index + 1}. ${result.title}`)
console.log(` 相似度: ${(result.similarity * 100).toFixed(1)}%`)
console.log(` 内容: ${result.content.substring(0, 50)}...`)
})
console.log()
// 测试 6: 多词查询
console.log('✅ 测试 6: 多词搜索')
const searchQuery2 = 'React 框架开发'
const results2 = searchTexts(searchQuery2, SAMPLE_TEXTS)
console.log(`搜索查询: "${searchQuery2}"`)
console.log(`找到 ${results2.length} 条结果\n`)
results2.slice(0, 3).forEach((result, index) => {
console.log(` ${index + 1}. ${result.title}`)
console.log(` 相似度: ${(result.similarity * 100).toFixed(1)}%`)
})
console.log()
console.log('✨ 所有测试完成!算法工作正常。')