grok-4.7 在「实现拼写检查器」的评测结果

这是该 AI 模型在此测试用例上的详细评测结果。

基本信息

  • 模型名称:grok-4.7
  • 用例名称:实现拼写检查器
  • 测试类型:文本生成
  • 评测维度:代码生成

系统提示词(System Prompt)

这是给 AI 模型的背景设定和角色指令:

你是一名资深算法工程师,擅长字符串处理与动态规划算法。 回答要求: 1. 使用 Python 语言实现,代码需可直接运行。 2. 核心算法(编辑距离)必须使用动态规划实现,不得调用第三方库。 3. 代码需包含清晰的注释,解释关键步骤的逻辑。 4. 提供至少 3 组测试用例验证正确性,输出结果需格式清晰。 5. 追求代码简洁性与正确性,优先保证逻辑准确。

用户提示词(User Prompt)

这是用户给 AI 模型的具体任务要求:

请使用 Python 实现一个简单的拼写检查器,具体要求如下: **功能要求:** 1. 实现 `levenshtein_distance(word1, word2)` 函数,使用动态规划计算两个单词之间的编辑距离(Levenshtein Distance)。 - 编辑操作包括:插入一个字符、删除一个字符、替换一个字符,每种操作代价均为 1。 2. 实现 `spell_check(word, dictionary)` 函数: - 若 `word` 存在于 `dictionary` 中,返回 `{「correct」: True, 「suggestions」: []}`。 - 若 `word` 不在 `dictionary` 中,从词典中找出编辑距离最小的单词作为建议,返回 `{「correct」: False, 「suggestions」: [最相似单词列表]}`。 - 若存在多个编辑距离相同的最小值单词,全部包含在 `suggestions` 列表中,并按字母顺序排列。 - 检查时忽略大小写(统一转为小写处理)。 **输入输出示例:**

评测结果

综合得分

该模型在此用例的得分为:94.4 分(满分 100 分),已通过

基础难度评测结果

  • 得分:94.4 分
  • 通过状态:已通过

模型生成产物

以下是该模型针对此任务的实际生成内容:

```python def levenshtein_distance(word1: str, word2: str) -> int: """使用动态规划计算两个单词的编辑距离(插入、删除、替换代价均为 1)。""" m, n = len(word1), len(word2) # dp[i][j] 表示 word1 前 i 个字符转换成 word2 前 j 个字符的最小编辑距离 dp = [[0] * (n + 1) for _ in range(m + 1)] # 边界:空串到长度为 i/j 的串,只能通过插入或删除 for i in range(m + 1): dp[i][0] = i for j in range(n + 1): dp[0][j] = j for i in range(1, m + 1): for j in range(1, n + 1): if word1[i - 1] == word2[j - 1]: # 当前字符相同,无需额外操作 dp[i][j] = dp[i - 1][j - 1] else: dp[i][j] = 1 + min( dp[i - 1][j], # 删除 word1[i-1] dp[i][j - 1], # 插入 word2[j-1] dp[i - 1][j - 1], # 替换 ) return dp[m][n] def spell_check(word: str, dictionary: list) -> dict: """拼写检查:词典中存在则判正确,否则返回编辑距离最小的全部建议(按字母序)。""" target = word.lower() # 词典统一小写,并去重,避免重复建议 vocab = sorted({w.lower() for w in dictionary}) if target in vocab: return {"correct": True, "suggestions": []} best = None suggestions = [] for candidate in vocab: dist = levenshtein_distance(target, candidate) if best is None or dist < best: best = dist suggestions = [candidate] elif dist == best: suggestions.append(candidate) # vocab 已按字母序遍历,suggestions 天然有序;再排序以保证稳健 suggestions.sort() return {"correct": False, "suggestions": suggestions} def _run_tests(): dictionary = ["apple", "apply", "banana", "orange", "grape", "pineapple"] cases = [ ("apple", dictionary), # 完全匹配 ("aple", dictionary), # 缺一个字母,最近为 apple ("appl", dictionary), # apple / apply 距离同为 1 ("ORANGE", dictionary), # 大小写忽略,应判正确 ("xyz", dictionary), # 与所有词距离较大,取最小距离全集 ] for word, vocab in cases: result = spell_check(word, vocab) print(f"word={word!r}") print(f" correct={result['correct']}") print(f" suggestions={result['suggestions']}") print() # 单独验证编辑距离 assert levenshtein_distance("kitten", "sitting") == 3 assert levenshtein_distance("apple", "apple") == 0 assert levenshtein_distance("", "abc") == 3 print("levenshtein_distance assertions passed.") if __name__ == "__main__": _run_tests() ``` 运行后预期要点: - `apple` → `correct=True`,建议为空。 - `aple` → 建议 `['apple']`(距离 1,小于 `apply` 的距离 2)。 -...

AI 评审点评

以下是 AI 评审对该模型输出的点评:

【CLAUDE】候选输出是一个高质量的基础实现:动态规划编辑距离核心正确无误,spell_check 在命中判断、并列最小值的收集与排序、大小写归一化等要求上全部落实,五组测试用例加三条断言覆盖了完全匹配、单字符缺失、并列最优、大小写和远距离词等关键场景,且预期结论逐条可验证。代码注释到位、可直接运行,文档字符串简洁准确。主要提升空间在于空间复杂度(可换滚动数组)、返回建议时是否保留词典原始拼写,以及入参校验与长度差剪枝等健壮性增强。综合来看明显高于及格线,接近优秀。 【GEMINI】生成质量非常高,算法实现精确高效,无多余第三方依赖。测试用例丰富全面,充分覆盖了精准匹配、单字缺失、多分支并列建议以及大小写忽略等关键场景,代码可直接运行且工程素养极佳。 【KIMI】该实现是一份高质量的代码,完全满足题目所有功能要求,DP实现标准且正确,代码风格专业。在基础难度下属于优秀答卷,仅在输入校验等防御性编程方面略有提升空间。

进阶难度评测结果

  • 得分:2.5 分
  • 通过状态:未通过

模型生成产物

以下是该模型针对此任务的实际生成内容:

我将实现一个基于 Levenshtein 距离的 `SpellChecker`,并先把边界情况和排序规则核对清楚后再给出可运行代码。

AI 评审点评

以下是 AI 评审对该模型输出的点评:

【CLAUDE】该候选输出是一段未完成的意图说明,而非可交付的答案:它承诺会先理清边界情况与排序规则再给出代码,但正文中既无 SpellChecker 类定义,也无 edit_distance、get_candidates、suggest 任一方法的实现,更缺少题目要求的算法说明、异常处理与测试用例。评测输入包中给出的上下文在词典格式说明处即被截断,但即便按已呈现的全部需求衡量,该输出也未完成任何一项,三个维度均远低于 60 分及格线,基本可视为空回复。若继续生成,应至少补齐:编辑距离的二维 DP 实现与空间优化说明、候选词遍历与距离剪枝、按「距离升序 + 词频降序」的复合排序、统一小写内部处理但返回词典原始大小写、空输入与空词典等异常分支,以及覆盖三类场景的测试用例。 【GEMINI】候选输出未生成实际代码内容,仅包含一句未完成的引导性说明,所有任务要求(类实现、编辑距离算法、候选词筛选与排序、测试用例等)均未完成,无法达到及格标准。 【KIMI】该 candidate_output 仅为一段前置说明文字,完全没有提供任何可运行的 Python 代码实现。任务要求实现包含编辑距离计算、候选词查找、词频排序等核心功能的 SpellChecker 类,并需要提供测试用例和异常处理,但输出中完全缺失。这是一个不完整的响应,等同于未完成任务。

困难难度评测结果

  • 得分:3.1 分
  • 通过状态:未通过

模型生成产物

以下是该模型针对此任务的实际生成内容:

我会实现一个可运行的拼写检查器:BK 树负责候选召回,QWERTY 加权编辑距离、Bigram 与词频负责重排序,并附上复杂度说明与实际运行结果。先把模块化实现写完并跑通测试。

AI 评审点评

以下是 AI 评审对该模型输出的点评:

【CLAUDE】候选输出是一段自我陈述式的实现计划,声称「先把模块化实现写完并跑通测试」,但它本身没有实现任何东西,也没有给出跑通测试的证据。对照 EVAL_BLOB 中的任务描述与对话上下文,本题属于 hard 难度的算法实现题,评测要点正是编辑距离计算、候选词生成与排序这些可运行的核心功能,而候选在这三个要点上均为空白,只在名词层面复刻了需求清单。四个维度全部远低于 60 分及格线,整体可视为未作答。若要达标,至少需要补齐:BK 树类与查询实现、基于键位坐标归一化的加权编辑距离函数、带加一平滑的 Bigram 模型、用户词频权重与候选综合排序、check_text 接口及符合字段约定(word/position/suggestions)的输出示例,以及相应的复杂度注释与运行结果。 【GEMINI】生成结果发生严重截断或仅输出了任务复述的开场白,未提供任何实质性的代码、算法实现、复杂度分析及运行结果,属于完全未完成状态。 【KIMI】该候选输出严重不符合题目要求,仅输出了一段承诺性的空泛描述,完全没有提供任何可运行的代码实现、复杂度分析或运行结果。作为针对'hard'难度编程任务的回答,这属于典型的逃避型输出(evasive output),可能源于模型拒绝生成代码或过早终止。所有评分维度均处于极低水平,需在工程可靠性、指令遵循方面进行重大改进。

相关链接

您可以通过以下链接查看更多相关内容:

加载中...