Coverage for tests\utils\test_preprocessing.py: 100.00%

37 statements  

« prev     ^ index     » next       coverage.py v7.3.2, created at 2023-11-17 13:31 +0100

1# -*- coding: utf-8 -*- 

2 

3""" 

4* Name: interactive-clustering/tests/utils/test_preprocessing.py 

5* Description: Unittests for the `utils.preprocessing` module. 

6* Author: Erwan SCHILD 

7* Created: 17/03/2021 

8* Licence: CeCILL (https://cecill.info/licences.fr.html) 

9""" 

10 

11# ============================================================================== 

12# IMPORT PYTHON DEPENDENCIES 

13# ============================================================================== 

14 

15import pytest 

16 

17from cognitivefactory.interactive_clustering.utils.preprocessing import preprocess 

18 

19 

20# ============================================================================== 

21# test_preprocess_for_uninstalled_spacy_language_model 

22# ============================================================================== 

23def test_preprocess_for_uninstalled_spacy_language_model(): 

24 """ 

25 Test that the `utils.preprocessing.preprocess` raises `ValueError` for uninstalled spacy language model. 

26 """ 

27 

28 # Check a unimplemented vectorizer. 

29 with pytest.raises(ValueError, match="`spacy_language_model`"): 

30 preprocess( 

31 dict_of_texts={ 

32 "0": "Comment signaler une perte de carte de paiement ?", 

33 "1": "Quelle est la procédure pour chercher une carte de crédit avalée ?", 

34 "2": "Ma carte Visa a un plafond de paiment trop bas, puis-je l'augmenter ?", 

35 }, 

36 spacy_language_model="uninstalled", 

37 ) 

38 

39 

40# ============================================================================== 

41# test_preprocess_for_installed_spacy_language_model 

42# ============================================================================== 

43def test_preprocess_for_installed_spacy_language_model(): 

44 """ 

45 Test that the `utils.preprocessing.preprocess` works for an installed spacy language model. 

46 """ 

47 

48 # Check simple preprocessing. 

49 dict_of_preprocessed_texts = preprocess( 

50 dict_of_texts={ 

51 "0": "Hello. How are you ??", 

52 "1": "Hello, how old are you ?", 

53 "2": "Hello ! Where do you live ?", 

54 }, 

55 spacy_language_model="en_core_web_md", 

56 ) 

57 

58 # Assertions 

59 assert dict_of_preprocessed_texts 

60 

61 

62# ============================================================================== 

63# test_preprocess_for_simple_preprocessing 

64# ============================================================================== 

65def test_preprocess_for_simple_preprocessing(): 

66 """ 

67 Test that the `utils.preprocessing.preprocess` works for simple preprocessing. 

68 """ 

69 

70 # Check simple preprocessing. 

71 dict_of_preprocessed_texts = preprocess( 

72 dict_of_texts={ 

73 "0": "Comment signaler une perte de carte de paiement ?", 

74 "1": "Quelle est la procédure pour chercher une carte de crédit avalée ?", 

75 "2": "Ma carte Visa a un plafond de paiment trop bas, puis-je l'augmenter ?", 

76 }, 

77 ) 

78 

79 # Assertions 

80 assert dict_of_preprocessed_texts 

81 assert sorted(dict_of_preprocessed_texts.keys()) == ["0", "1", "2"] 

82 assert dict_of_preprocessed_texts["0"] == "comment signaler une perte de carte de paiement" 

83 assert dict_of_preprocessed_texts["1"] == "quelle est la procedure pour chercher une carte de credit avalee" 

84 assert dict_of_preprocessed_texts["2"] == "ma carte visa a un plafond de paiment trop bas puis je l augmenter" 

85 

86 

87# ============================================================================== 

88# test_preprocess_for_stopwords_deletion 

89# ============================================================================== 

90def test_preprocess_for_stopwords_deletion(): 

91 """ 

92 Test that the `utils.preprocessing.preprocess` works for stopwords deletion. 

93 """ 

94 

95 # Check stopwords deletion. 

96 dict_of_preprocessed_texts = preprocess( 

97 dict_of_texts={ 

98 "0": "Comment signaler une perte de carte de paiement ?", 

99 "1": "Quelle est la procédure pour chercher une carte de crédit avalée ?", 

100 "2": "Ma carte Visa a un plafond de paiment trop bas, puis-je l'augmenter ?", 

101 }, 

102 apply_stopwords_deletion=True, 

103 ) 

104 

105 # Assertions 

106 assert dict_of_preprocessed_texts 

107 assert sorted(dict_of_preprocessed_texts.keys()) == ["0", "1", "2"] 

108 assert dict_of_preprocessed_texts["0"] == "signaler perte carte paiement" 

109 assert dict_of_preprocessed_texts["1"] == "procedure chercher carte credit avalee" 

110 assert dict_of_preprocessed_texts["2"] == "carte visa plafond paiment trop l augmenter" 

111 

112 

113# ============================================================================== 

114# test_preprocess_for_parsing_filter 

115# ============================================================================== 

116def test_preprocess_for_parsing_filter(): 

117 """ 

118 Test that the `utils.preprocessing.preprocess` works for parsing filter. 

119 """ 

120 

121 # Check parsing filter. 

122 dict_of_preprocessed_texts = preprocess( 

123 dict_of_texts={ 

124 "0": "Comment signaler une perte de carte de paiement ?", 

125 "1": "Quelle est la procédure pour chercher une carte de crédit avalée ?", 

126 "2": "Ma carte Visa a un plafond de paiment trop bas, puis-je l'augmenter ?", 

127 }, 

128 apply_parsing_filter=True, 

129 ) 

130 

131 # Assertions 

132 assert dict_of_preprocessed_texts 

133 assert sorted(dict_of_preprocessed_texts.keys()) == ["0", "1", "2"] 

134 assert dict_of_preprocessed_texts["0"] == "comment signaler perte" 

135 assert dict_of_preprocessed_texts["1"] == "quelle est procedure chercher" 

136 assert dict_of_preprocessed_texts["2"] == "carte a plafond augmenter" 

137 

138 

139# ============================================================================== 

140# test_preprocess_for_lemmatization 

141# ============================================================================== 

142def test_preprocess_for_lemmatization(): 

143 """ 

144 Test that the `utils.preprocessing.preprocess` works for lemmatization. 

145 """ 

146 

147 # Check lemmatization. 

148 dict_of_preprocessed_texts = preprocess( 

149 dict_of_texts={ 

150 "0": "Comment signaler une perte de carte de paiement ?", 

151 "1": "Quelle est la procédure pour chercher une carte de crédit avalée ?", 

152 "2": "Ma carte Visa a un plafond de paiment trop bas, puis-je l'augmenter ?", 

153 }, 

154 apply_lemmatization=True, 

155 ) 

156 

157 # Assertions 

158 assert dict_of_preprocessed_texts 

159 assert sorted(dict_of_preprocessed_texts.keys()) == ["0", "1", "2"] 

160 assert dict_of_preprocessed_texts["0"] == "comment signaler un perte de carte de paiement" 

161 assert dict_of_preprocessed_texts["1"] == "quel etre le procedure pour chercher un carte de credit avaler" 

162 assert dict_of_preprocessed_texts["2"] == "mon carte visa avoir un plafond de paiment trop bas puis je l augmenter"