def getSynset_Ids(self, lemma, lang, targetLang=None, pos=None, source=None): """ get synsetids to request target url lemma; word lang: language targetLang: target language that is often the same as lang; howerver rarely is not same. pos: part of speech source: wikipedia and so on return synsetsids """ self.lang = lang synset_url = self.make_url(function="getSynsetIds?", lemma=lemma, lang=self.lang, pos=pos, source=source) synset_url = synset_url.format(lemma, self.lang, self.key) synset_json = urllib.request.urlopen(synset_url).read() synset_json = synset_json.decode(self.unicode, self.unicode_option) synset_ids = [dict2obj(js) for js in json.loads(synset_json)] self.synset_ids = synset_ids return synset_ids
def getSenses(self, lemma, lang, lemma_type="full", force_compare=True, useURL=False): """ get senses from synsets lang: language pos: part of speech lemma_type: full, simple force_compare: A == a. a big character is the same as a small character. useURL: if it is True, it search from url. Unless, search from data has been already got return: Senses """ if useURL: lang = lang or self.lang synset_url = self.make_url(function="getSenses?", lemma=lemma, lang=lang) synset_json = urllib.request.urlopen(synset_url).read() synset_json = synset_json.decode(self.unicode, self.unicode_option) senses = [dict2obj(js) for js in json.loads(synset_json)] else: senses = [] if "full" == lemma_type: for synset in self.synsets: for sense in synset.senses: if force_compare and \ sense.properties.fullLemma.lower() == lemma.lower() and \ sense.properties.language.lower() == lang.lower(): senses.append(sense) elif sense.properties.fullLemma == lemma and \ sense.properties.language == lang: senses.append(sense) elif "simple" == lemma_type: for synset in self.synsets: for sense in synset.senses: if force_compare and \ sense.properties.fullLemma.lower() == lemma.lower() and \ sense.properties.language.lower() == lang.lower(): senses.append(sense) elif sense.properties.simpleLemma == lemma and \ sense.properties.language == lang: senses.append(sense) self.senses = senses return senses
def getOutgoingEdges(self, synset_id): """ get edges that has relationships against other synsets to request target url synset_id: a babelnet synsetid return edges """ synset_url = self.make_url(function="getOutgoingEdges?", id=synset_id) synset_url = synset_url.format(synset_id, self.key) synset_json = urllib.request.urlopen(synset_url).read() synset_json = synset_json.decode(self.unicode, self.unicode_option) edges = [dict2obj(js) for js in json.loads(synset_json)] self.edges = edges return edges
def getWordNetId(self, synset_id): """ For your internal server only, get WordNet id which is equal to BabelNet id synset_id: a babelnet synsetid return wordnet synsetid """ assert ("internal server only", self.key is None) synset_url = self.make_url(function="getWordnetId?", id=synset_id) synset_url = synset_url.format(synset_id, self.key) synset_json = urllib.request.urlopen(synset_url).read() synset_json = synset_json.decode(self.unicode, self.unicode_option) wordnet_ids = [dict2obj(js) for js in json.loads(synset_json)] return wordnet_ids
def getSynsets(self, synset_id, targetLang=None, change_lang=False): """ get synsets to request target url synset_id: a babelnet synsetid targetLang: target language that is often the same as lang; howerver rarely is not same. change_lang: for translation or sub language return synsets """ if change_lang and targetLang != None: if type(targetLang) == list: self.lang = targetLang[0] else: self.lang = targetLang targetLang = targetLang or self.lang synset_url = self.make_url(function="getSynset?", id=synset_id, targetLang=targetLang) synset_json = urllib.request.urlopen(synset_url).read() synset_json = synset_json.decode(self.unicode, self.unicode_option) synsets = [dict2obj(json.loads(synset_json))] self.synsets = synsets return synsets