Skip to content

Commit 008db1c

Browse files
author
bgalego
committed
Adds auxiliary funcions to Topics and Lang responses and bumps the version to 1.2.2.
1 parent 199ba2c commit 008db1c

8 files changed

Lines changed: 71 additions & 11 deletions

File tree

README.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -138,10 +138,10 @@ try:
138138
# If there are no errors in the request, we will use the language detected to make a request to Sentiment and Topics
139139
if lang_response.isSuccessful():
140140
print("\nThe request to 'Language Identification' finished successfully!\n")
141-
languages = lang_response.getLanguages()
142-
if languages:
143-
language = lang_response.getLanguageCode(languages[0])
144-
print("\tLanguage detected: " + lang_response.getLanguageName(languages[0]) + ' (' + language + ")\n")
141+
first_lang = lang_response.getFirstLanguage()
142+
if first_lang:
143+
language = lang_response.getLanguageCode(first_lang)
144+
print("\tLanguage detected: " + lang_response.getLanguageName(first_lang) + ' (' + language + ")\n")
145145
else:
146146
print("\tNo language detected!\n")
147147

example/Client.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -60,10 +60,10 @@
6060
# If there are no errors in the request, we will use the language detected to make a request to Sentiment and Topics
6161
if lang_response.isSuccessful():
6262
print("\nThe request to 'Language Identification' finished successfully!\n")
63-
languages = lang_response.getLanguages()
64-
if languages:
65-
language = lang_response.getLanguageCode(languages[0])
66-
print("\tLanguage detected: " + lang_response.getLanguageName(languages[0]) + ' (' + language + ")\n")
63+
first_lang = lang_response.getFirstLanguage()
64+
if first_lang:
65+
language = lang_response.getLanguageCode(first_lang)
66+
print("\tLanguage detected: " + lang_response.getLanguageName(first_lang) + ' (' + language + ")\n")
6767
else:
6868
print("\tNo language detected!\n")
6969

meaningcloud/LanguageResponse.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,19 @@ def getLanguages(self):
2828
if (('language_list' in self._response.keys()) and (self._response['language_list'] is not None))
2929
else {})
3030

31+
def getFirstLanguage(self):
32+
"""
33+
Get first language returned for the analyzed text
34+
35+
:return:
36+
Array with the field of the language detected
37+
"""
38+
39+
languages = (self._response['language_list']
40+
if (('language_list' in self._response.keys()) and (self._response['language_list'] is not None))
41+
else {})
42+
return languages[0] if((len(languages) > 0) and (languages[0] is not None)) else []
43+
3144
def getLanguageCode(self, language):
3245
"""
3346
Get the code of a language

meaningcloud/Request.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -105,8 +105,8 @@ def sendRequest(self, extraHeaders=""):
105105
:return:
106106
Response object set to None if there is an error
107107
"""
108-
109-
self.addParam('src', 'mc-python')
108+
if not 'src' in self._params.keys():
109+
self.addParam('src', 'mc-python')
110110

111111
params = urlencode(self._params)
112112

meaningcloud/TopicsResponse.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,21 @@ def getTypeLastNode(self, type_):
174174
lastNode = aType[len(aType) - 1]
175175
return lastNode
176176

177+
def getTypeFirstNode(self, type_):
178+
"""
179+
Obtains the firstlevel node of the type specified
180+
:param type_:
181+
Type we want to analize (sementity, semtheme)
182+
:return:
183+
First node of the type (or Top if there's no first type)
184+
"""
185+
186+
firstNode = ""
187+
if type_ and (type(type_) is not list) and (type(type_) is not dict):
188+
aType = type_.split('>')
189+
firstNode = aType[1] if len(aType)>1 else aType[0]
190+
return firstNode
191+
177192
def getNumberOfAppearances(self, topic):
178193
"""
179194
Gets the number of appearances of a topic

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
setup(
1515

1616
name='MeaningCloud-python',
17-
version='1.2.1',
17+
version='1.2.2',
1818
description='Official Python SDK for MeaningCloud APIs',
1919
long_description=readme,
2020
long_description_content_type='text/markdown',

tests/LanguageResponseTest.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,14 @@ def testGetLanguages(self):
3131
def testGetNonexistentLanguages(self):
3232
self.assertEqual(len(self.empty_response.getLanguages()), 0)
3333

34+
def testGetFirstLanguage(self):
35+
language = self.response.getFirstLanguage()
36+
self.assertIsNotNone(language)
37+
38+
def testGetNonExistentFirstLanguage(self):
39+
language = self.empty_response.getFirstLanguage()
40+
self.assertEqual(len(language), 0)
41+
3442
def testGetLanguageCode(self):
3543
languages = self.response.getLanguages()
3644
language = languages[0] if((len(languages) > 0) and (languages[0] is not None)) else []

tests/TopicsResponseTest.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,30 @@ def testGetTypeLastNode(self):
141141
wrongFormatArray = self.response.getTypeLastNode({'dummy_key': 'dummy_value'})
142142
self.assertEqual(wrongFormatArray, "")
143143

144+
def testGetTypeFirstNode(self):
145+
# correct_values
146+
firstEntityFirstNode = self.response.getTypeFirstNode(self.response.getOntoType(self.response.getEntities()[0]))
147+
self.assertIsNotNone(firstEntityFirstNode)
148+
self.assertEqual(firstEntityFirstNode, 'Location')
149+
150+
firstConceptFirstNode = self.response.getTypeFirstNode(self.response.getOntoType(self.response.getConcepts()[0]))
151+
self.assertIsNotNone(firstConceptFirstNode)
152+
self.assertEqual(firstConceptFirstNode, 'Location')
153+
154+
responseNoFirstNode = '{"status":{"code":"0","msg":"OK","credits":"1","remaining_credits":"5000"},"entity_list":[{"form":"DummyTopValue","id":"__madeUpID","sementity":{"class":"instance","id":"__madeupValue","type":"Top"},"variant_list":[{"form":"DummyTopValue","inip":"0","endp":"12"}],"relevance":"100"}]}'
155+
localResponse = meaningcloud.TopicsResponse(responseNoFirstNode)
156+
localFirstEntityFirstNode = localResponse.getTypeFirstNode(localResponse.getOntoType(localResponse.getEntities()[0]))
157+
self.assertIsNotNone(localFirstEntityFirstNode)
158+
self.assertEqual(localFirstEntityFirstNode, 'Top')
159+
160+
# wrong_values
161+
wrongFormat = self.response.getTypeLastNode('dummy_value')
162+
self.assertEqual(wrongFormat, 'dummy_value')
163+
164+
wrongFormatArray = self.response.getTypeLastNode({'dummy_key': 'dummy_value'})
165+
self.assertEqual(wrongFormatArray, "")
166+
167+
144168
def testIsUserDefined(self):
145169
self.assertEqual(self.response.isUserDefined(self.response.getEntities()[0]), False)
146170
self.assertEqual(self.response.isUserDefined(self.response.getConcepts()[0]), False)

0 commit comments

Comments
 (0)