科学光束对准,
sciencebeam-alignment的Python项目详细描述
科学光束对准
为ScienceBeam项目提供序列对齐实用程序功能。
先决条件
- python 2或3
API
序列匹配器
python的SequenceMatcher 由fuzzywuzzy的StringMatcher提供。
在这方面,sciencebeam-alignment
仅仅提供了一个带有回退的包装器。
wordsequencematcher
上述SequenceMatcher
的包装,但仅在字级标记上匹配。
它目前只实现get_matching_blocks
。
它的主要优点是对于长文本来说速度更快,因为它不需要匹配单个字符。它不推荐用于短文本,因为在短文本中,字符级对齐可能更可取。
匹配结果示例:
>>>fromsciencebeam_alignment.word_sequence_matcherimport(...WordSequenceMatcher...)>>>WordSequenceMatcher(a='word1',b='word2').get_matching_blocks()[]>>>WordSequenceMatcher(a='a word1 b',b='x word1 y').get_matching_blocks()[(2,2,5)]
GlobalSequenceMatcher和LocalSequenceMatcher
GlobalSequenceMatcher and LocalSequenceMatcher实现了Needleman-Wunschglobal alignment以及Smith-Waterman局部对齐算法。这个实现有点受到python-alignment的启发。
它确实实现了get_matching_blocks
以匹配python的SequenceMatcher。
通过传入一个计分对象,结果可能会受到影响(例如,差距可能会更大)。
它还提供了使用Cython的优化实现。优化的级别取决于传入序列的类型和评分。最快的是整数序列和简单的评分。
>>>fromsciencebeam_alignment.alignimportLocalSequenceMatcher,SimpleScoring>>>DEFAULT_SCORING=SimpleScoring(match_score=3,mismatch_score=-1,gap_score=-2)>>>LocalSequenceMatcher(a='a word1 b',b='x word2 y',scoring=DEFAULT_SCORING).get_matching_blocks()[(1,1,5),(7,7,1),(9,9,0)]
要检查是否启用了快速实现:
>>>fromsciencebeam_alignment.alignimportnative_enabled>>>native_enabledTrue
开发
可以使用Docker(默认)或虚拟环境进行开发。
所有命令都可以通过make
获得。
使用Docker开发
生成并运行测试:
make build test
或用于ci:
make ci-build-and-test
使用虚拟环境开发
make
前缀为dev-
的目标用于虚拟环境。
这要求您已经安装了python。
设置(虚拟环境)
make dev-venv
要更新依赖项:
make dev-install
cython(虚拟环境)
使用cython编译代码:
make dev-cython-clean dev-cython-compile
测试(虚拟环境)
make dev-test
或:
make dev-watch