Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
DeepSpeech
提交
26eb54eb
D
DeepSpeech
项目概览
PaddlePaddle
/
DeepSpeech
大约 1 年 前同步成功
通知
206
Star
8425
Fork
1598
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
245
列表
看板
标记
里程碑
合并请求
3
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
DeepSpeech
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
245
Issue
245
列表
看板
标记
里程碑
合并请求
3
合并请求
3
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
26eb54eb
编写于
6月 18, 2017
作者:
Y
yangyaming
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Follow comments.
上级
86eeb52c
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
48 addition
and
12 deletion
+48
-12
error_rate.py
error_rate.py
+9
-7
tests/test_error_rate.py
tests/test_error_rate.py
+39
-5
未找到文件。
error_rate.py
浏览文件 @
26eb54eb
# -*- coding: utf-8 -*-
"""
This module provides functions to calculate error rate in different level.
e.g. wer for word-level, cer for char-level.
"""This module provides functions to calculate error rate in different level.
e.g. wer for word-level, cer for char-level.
"""
from
__future__
import
absolute_import
from
__future__
import
division
from
__future__
import
print_function
import
numpy
as
np
...
...
@@ -42,8 +44,7 @@ def levenshtein_distance(ref, hyp):
def
wer
(
reference
,
hypothesis
,
ignore_case
=
False
,
delimiter
=
' '
):
"""
Calculate word error rate (WER). WER compares reference text and
"""Calculate word error rate (WER). WER compares reference text and
hypothesis text in word-level. WER is defined as:
.. math::
...
...
@@ -71,6 +72,7 @@ def wer(reference, hypothesis, ignore_case=False, delimiter=' '):
:type delimiter: char
:return: Word error rate.
:rtype: float
:raises ValueError: If reference length is zero.
"""
if
ignore_case
==
True
:
reference
=
reference
.
lower
()
...
...
@@ -88,8 +90,7 @@ def wer(reference, hypothesis, ignore_case=False, delimiter=' '):
def
cer
(
reference
,
hypothesis
,
ignore_case
=
False
):
"""
Calculate charactor error rate (CER). CER compares reference text and
"""Calculate charactor error rate (CER). CER compares reference text and
hypothesis text in char-level. CER is defined as:
.. math::
...
...
@@ -117,6 +118,7 @@ def cer(reference, hypothesis, ignore_case=False):
:type ignore_case: bool
:return: Character error rate.
:rtype: float
:raises ValueError: If reference length is zero.
"""
if
ignore_case
==
True
:
reference
=
reference
.
lower
()
...
...
tests/test_error_rate.py
浏览文件 @
26eb54eb
# -*- coding: utf-8 -*-
"""Test error rate."""
from
__future__
import
absolute_import
from
__future__
import
division
from
__future__
import
print_function
import
unittest
import
sys
sys
.
path
.
append
(
'..'
)
import
error_rate
class
TestParse
(
unittest
.
TestCase
):
def
test_wer
(
self
):
def
test_wer
_1
(
self
):
ref
=
'i UM the PHONE IS i LEFT THE portable PHONE UPSTAIRS last night'
hyp
=
'i GOT IT TO the FULLEST i LOVE TO portable FROM OF STORES last night'
word_error_rate
=
error_rate
.
wer
(
ref
,
hyp
)
self
.
assertTrue
(
abs
(
word_error_rate
-
0.769230769231
)
<
1e-6
)
def
test_cer_en
(
self
):
def
test_wer_2
(
self
):
ref
=
'i UM the PHONE IS i LEFT THE portable PHONE UPSTAIRS last night'
word_error_rate
=
error_rate
.
wer
(
ref
,
ref
)
self
.
assertEqual
(
word_error_rate
,
0.0
)
def
test_wer_3
(
self
):
ref
=
' '
hyp
=
'Hypothesis sentence'
try
:
word_error_rate
=
error_rate
.
wer
(
ref
,
hyp
)
except
Exception
as
e
:
self
.
assertTrue
(
isinstance
(
e
,
ValueError
))
def
test_cer_1
(
self
):
ref
=
'werewolf'
hyp
=
'weae wolf'
char_error_rate
=
error_rate
.
cer
(
ref
,
hyp
)
self
.
assertTrue
(
abs
(
char_error_rate
-
0.25
)
<
1e-6
)
def
test_cer_zh
(
self
):
def
test_cer_2
(
self
):
ref
=
'werewolf'
char_error_rate
=
error_rate
.
cer
(
ref
,
ref
)
self
.
assertEqual
(
char_error_rate
,
0.0
)
def
test_cer_3
(
self
):
ref
=
u
'我是中国人'
hyp
=
u
'我是 美洲人'
char_error_rate
=
error_rate
.
cer
(
ref
,
hyp
)
self
.
assertTrue
(
abs
(
char_error_rate
-
0.6
)
<
1e-6
)
def
test_cer_4
(
self
):
ref
=
u
'我是中国人'
char_error_rate
=
error_rate
.
cer
(
ref
,
ref
)
self
.
assertFalse
(
char_error_rate
,
0.0
)
def
test_cer_5
(
self
):
ref
=
''
hyp
=
'Hypothesis'
try
:
char_error_rate
=
error_rate
.
cer
(
ref
,
hyp
)
except
Exception
as
e
:
self
.
assertTrue
(
isinstance
(
e
,
ValueError
))
if
__name__
==
'__main__'
:
unittest
.
main
()
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录