hankcs/HanLP · error · ValueError
Unsupported version {version}
Error message
Unsupported version {version} What it means
convert_to_dependency downloads a specific Stanford Parser release to convert constituency trees to dependencies; only version '3.3.0' (for older SD) and '4.2.0' (for UD-style conversion) have known download URLs. Any other version string raises ValueError.
Source
Thrown at hanlp/datasets/parsing/loaders/_ctb_utils.py:84
# cids = set(f'{x:04d}' for x in cids)
# assert len(cids & total) == 0, f'Overlap found in {part}'
# splits[part] = cids
#
# return splits
#
#
# _make_splits(CTB9_ACADEMIA_SPLITS)
def convert_to_dependency(src, dst, language='zh', version='3.3.0', conllx=True, ud=False):
cprint(f'Converting {os.path.basename(src)} to {os.path.basename(dst)} using Stanford Parser Version {version}. '
f'It might take a while [blink][yellow]...[/yellow][/blink]')
if version == '3.3.0':
sp_home = 'https://nlp.stanford.edu/software/stanford-parser-full-2013-11-12.zip'
elif version == '4.2.0':
sp_home = 'https://nlp.stanford.edu/software/stanford-parser-4.2.0.zip'
else:
raise ValueError(f'Unsupported version {version}')
sp_home = get_resource(sp_home)
# jar_path = get_resource(f'{sp_home}#stanford-parser.jar')
if ud:
jclass = 'edu.stanford.nlp.trees.international.pennchinese.UniversalChineseGrammaticalStructure' if language == 'zh' \
else 'edu.stanford.nlp.trees.ud.UniversalDependenciesConverter'
else:
jclass = 'edu.stanford.nlp.trees.international.pennchinese.ChineseGrammaticalStructure' if language == 'zh' \
else 'edu.stanford.nlp.trees.EnglishGrammaticalStructure'
cmd = f'java -cp {sp_home}/* {jclass} ' \
f'-treeFile {src}'
if conllx:
cmd += ' -conllx'
if not ud:
cmd += f' -basic -keepPunct'
code, out, err = get_exitcode_stdout_stderr(cmd)
with open(dst, 'w') as f:
f.write(out)
if code:View on GitHub (pinned to ddb1299bdd)
Solutions
- Use version='4.2.0' (UD) or version='3.3.0' (Stanford Dependencies 3.3.0)
- Check the calling function's defaults; ensure a config value isn't overriding version
Example fix
# before convert_to_dependency(treebank, out, language='zh', version='3.5.2') # after convert_to_dependency(treebank, out, language='zh', version='4.2.0')
Defensive patterns
Strategy: validation
Validate before calling
assert version in ('3.3.0', '4.2.0'), f'unsupported Stanford Parser version {version}' Prevention
- Whitelist supported converter versions in config validation
When it happens
Trigger: Calling make_ctb_tasks/make_dep_conllx/convert_to_dependency with version='4.0.0', '3.5.2', or any value other than '3.3.0'/'4.2.0' (or leaving an unset config default).
Common situations: Changing the conversion standard in a CTB preparation script; assuming any Stanford Parser version string works.
Related errors
- Got average f{average}, expected one of None, 'token', or 'b
- activation must be callable: type={}
- Conversion failed with code {code} for {src}. The err messag
- invalid number of tags: {num_tags}
- invalid reduction: {reduction}
AI-assisted analysis of hankcs/HanLP@ddb1299bdd (2026-08-27).
Data as JSON: /api/errors/c6493d121b7b0abe.
Report an issue: GitHub.