Skip to content

Commit fe6a9c0

Browse files
authored
Correct typo in 'similarity' (#88)
and be backwards compatible. Resolves #87
1 parent 81702e5 commit fe6a9c0

File tree

5 files changed

+30
-16
lines changed

5 files changed

+30
-16
lines changed

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -128,8 +128,8 @@ gives
128128
METEOR: 0.295797
129129
ROUGE_L: 0.522104
130130
CIDEr: 1.242192
131-
SkipThoughtsCosineSimilairty: 0.626149
132-
EmbeddingAverageCosineSimilairty: 0.884690
131+
SkipThoughtsCosineSimilarity: 0.626149
132+
EmbeddingAverageCosineSimilarity: 0.884690
133133
VectorExtremaCosineSimilarity: 0.568696
134134
GreedyMatchingScore: 0.784205
135135

nlgeval/__init__.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ def compute_metrics(hypothesis, references, no_overlap=False, no_skipthoughts=Fa
5959
vector_refs = map(lambda refl: encoder.encode([r.strip() for r in refl], verbose=False), ref_list_T)
6060
cosine_similarity = list(map(lambda refv: cosine_similarity(refv, vector_hyps).diagonal(), vector_refs))
6161
cosine_similarity = np.max(cosine_similarity, axis=0).mean()
62-
print("SkipThoughtsCosineSimilairty: %0.6f" % (cosine_similarity))
62+
print("SkipThoughtsCosineSimilarity: %0.6f" % (cosine_similarity))
6363
ret_scores['SkipThoughtCS'] = cosine_similarity
6464
del model
6565

@@ -142,7 +142,7 @@ def compute_individual_metrics(ref, hyp, no_overlap=False, no_skipthoughts=False
142142

143143
class NLGEval(object):
144144
glove_metrics = {
145-
'EmbeddingAverageCosineSimilairty',
145+
'EmbeddingAverageCosineSimilarity',
146146
'VectorExtremaCosineSimilarity',
147147
'GreedyMatchingScore',
148148
}
@@ -180,6 +180,11 @@ def __init__(self, no_overlap=False, no_skipthoughts=False, no_glove=False,
180180
self.metrics_to_omit = set()
181181
else:
182182
self.metrics_to_omit = set(metrics_to_omit)
183+
# For backwards compatibility.
184+
if 'EmbeddingAverageCosineSimilairty' in self.metrics_to_omit:
185+
self.metrics_to_omit.remove('EmbeddingAverageCosineSimilairty')
186+
self.metrics_to_omit.add('EmbeddingAverageCosineSimilarity')
187+
183188
assert len(self.metrics_to_omit - self.valid_metrics) == 0, \
184189
"Invalid metrics to omit: {}".format(self.metrics_to_omit - self.valid_metrics)
185190

nlgeval/tests/test_nlgeval.py

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,11 @@ def test_compute_metrics_oo(self):
2525
self.assertAlmostEqual(0.9070631, scores['ROUGE_L'], places=5)
2626
self.assertAlmostEqual(0.0, scores['CIDEr'], places=5)
2727
self.assertAlmostEqual(0.8375251, scores['SkipThoughtCS'], places=5)
28-
self.assertAlmostEqual(0.980075, scores['EmbeddingAverageCosineSimilairty'], places=5)
28+
self.assertAlmostEqual(0.980075, scores['EmbeddingAverageCosineSimilarity'], places=5)
29+
self.assertEqual(scores['EmbeddingAverageCosineSimilarity'], scores['EmbeddingAverageCosineSimilairty'])
2930
self.assertAlmostEqual(0.94509, scores['VectorExtremaCosineSimilarity'], places=5)
3031
self.assertAlmostEqual(0.960771, scores['GreedyMatchingScore'], places=5)
31-
self.assertEqual(11, len(scores))
32+
self.assertEqual(12, len(scores))
3233

3334
scores = n.compute_metrics(ref_list=[
3435
[
@@ -53,10 +54,10 @@ def test_compute_metrics_oo(self):
5354
self.assertAlmostEqual(0.522104, scores['ROUGE_L'], places=5)
5455
self.assertAlmostEqual(1.242192, scores['CIDEr'], places=5)
5556
self.assertAlmostEqual(0.626149, scores['SkipThoughtCS'], places=5)
56-
self.assertAlmostEqual(0.88469, scores['EmbeddingAverageCosineSimilairty'], places=5)
57+
self.assertAlmostEqual(0.88469, scores['EmbeddingAverageCosineSimilarity'], places=5)
5758
self.assertAlmostEqual(0.568696, scores['VectorExtremaCosineSimilarity'], places=5)
5859
self.assertAlmostEqual(0.784205, scores['GreedyMatchingScore'], places=5)
59-
self.assertEqual(11, len(scores))
60+
self.assertEqual(12, len(scores))
6061

6162
# Non-ASCII tests.
6263
scores = n.compute_individual_metrics(ref=["Test en français.",
@@ -70,10 +71,11 @@ def test_compute_metrics_oo(self):
7071
self.assertAlmostEqual(0.9070631, scores['ROUGE_L'], places=5)
7172
self.assertAlmostEqual(0.0, scores['CIDEr'], places=5)
7273
self.assertAlmostEqual(0.9192341566085815, scores['SkipThoughtCS'], places=5)
73-
self.assertAlmostEqual(0.906562, scores['EmbeddingAverageCosineSimilairty'], places=5)
74+
self.assertAlmostEqual(0.906562, scores['EmbeddingAverageCosineSimilarity'], places=5)
75+
self.assertEqual(scores['EmbeddingAverageCosineSimilarity'], scores['EmbeddingAverageCosineSimilairty'])
7476
self.assertAlmostEqual(0.815158, scores['VectorExtremaCosineSimilarity'], places=5)
7577
self.assertAlmostEqual(0.940959, scores['GreedyMatchingScore'], places=5)
76-
self.assertEqual(11, len(scores))
78+
self.assertEqual(12, len(scores))
7779

7880
scores = n.compute_individual_metrics(ref=["テスト"],
7981
hyp="テスト")
@@ -83,10 +85,10 @@ def test_compute_metrics_oo(self):
8385
self.assertAlmostEqual(0.0, scores['CIDEr'], places=3)
8486
self.assertAlmostEqual(1.0, scores['SkipThoughtCS'], places=3)
8587
self.assertAlmostEqual(1.0, scores['GreedyMatchingScore'], places=3)
86-
self.assertEqual(11, len(scores))
88+
self.assertEqual(12, len(scores))
8789

8890
def test_compute_metrics_omit(self):
89-
n = NLGEval(metrics_to_omit=['Bleu_3', 'METEOR', 'EmbeddingAverageCosineSimilairty'])
91+
n = NLGEval(metrics_to_omit=['Bleu_3', 'METEOR', 'EmbeddingAverageCosineSimilarity'])
9092

9193
# Individual Metrics
9294
scores = n.compute_individual_metrics(ref=["this is a test",
@@ -115,7 +117,8 @@ def test_compute_metrics(self):
115117
self.assertAlmostEqual(0.522104, scores['ROUGE_L'], places=5)
116118
self.assertAlmostEqual(1.242192, scores['CIDEr'], places=5)
117119
self.assertAlmostEqual(0.626149, scores['SkipThoughtCS'], places=5)
118-
self.assertAlmostEqual(0.88469, scores['EmbeddingAverageCosineSimilairty'], places=5)
120+
self.assertAlmostEqual(0.88469, scores['EmbeddingAverageCosineSimilarity'], places=5)
121+
self.assertEqual(scores['EmbeddingAverageCosineSimilarity'], scores['EmbeddingAverageCosineSimilairty'])
119122
self.assertAlmostEqual(0.568696, scores['VectorExtremaCosineSimilarity'], places=5)
120123
self.assertAlmostEqual(0.784205, scores['GreedyMatchingScore'], places=5)
121-
self.assertEqual(11, len(scores))
124+
self.assertEqual(12, len(scores))

nlgeval/word2vec/evaluate.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,10 @@ def eval_emb_metrics(hypothesis, references, emb=None, metrics_to_omit=None):
5151

5252
if metrics_to_omit is None:
5353
metrics_to_omit = set()
54+
else:
55+
if 'EmbeddingAverageCosineSimilairty' in metrics_to_omit:
56+
metrics_to_omit.remove('EmbeddingAverageCosineSimilairty')
57+
metrics_to_omit.add('EmbeddingAverageCosineSimilarity')
5458

5559
emb_hyps = []
5660
avg_emb_hyps = []
@@ -94,9 +98,11 @@ def eval_emb_metrics(hypothesis, references, emb=None, metrics_to_omit=None):
9498
extreme_emb_refs.append(extreme_emb_refsource)
9599

96100
rval = []
97-
if 'EmbeddingAverageCosineSimilairty' not in metrics_to_omit:
101+
if 'EmbeddingAverageCosineSimilarity' not in metrics_to_omit:
98102
cos_similarity = list(map(lambda refv: cosine_similarity(refv, avg_emb_hyps).diagonal(), avg_emb_refs))
99103
cos_similarity = np.max(cos_similarity, axis=0).mean()
104+
rval.append("EmbeddingAverageCosineSimilarity: %0.6f" % (cos_similarity))
105+
# For backwards compatibility with an old typo before Nov 20, 2019.
100106
rval.append("EmbeddingAverageCosineSimilairty: %0.6f" % (cos_similarity))
101107

102108
if 'VectorExtremaCosineSimilarity' not in metrics_to_omit:

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
reqs = [str(ir.req) for ir in install_reqs]
2525

2626
setup(name='nlg-eval',
27-
version='2.2',
27+
version='2.3',
2828
description="Wrapper for multiple NLG evaluation methods and metrics.",
2929
author='Shikhar Sharma, Hannes Schulz, Justin Harris',
3030
author_email='shikhar.sharma@microsoft.com, hannes.schulz@microsoft.com, justin.harris@microsoft.com',

0 commit comments

Comments
 (0)