Nltk: CoreNLPParser рдЯреИрдЧ () рдХреЛ рдЧреБрдг рдУрд╡рд░рд▓реЛрдбрд┐рдВрдЧ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреА рдЪрд╛рд╣рд┐рдП

рдХреЛ рдирд┐рд░реНрдорд┐рдд 10 рд╕рд┐рддре░ 2018  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: nltk/nltk

рд╡рд░реНрддрдорд╛рди CoreNLPParser.tag() , рд╕реНрдЯреИрдирдлреЛрд░реНрдб рдХреЛрд░рдПрдирдПрд▓рдкреА рджреНрд╡рд╛рд░рд╛ "рдкреБрдирдГ рдЯреЛрдХрдирдирд╛рдЗрдЬрд╝реЗрд╢рди" рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд╣реИ:

>>> from nltk.parse.corenlp import CoreNLPParser
>>> ner_tagger = CoreNLPParser(url='http://localhost:9000', tagtype='ner')
>>> sent = ['my', 'phone', 'number', 'is', '1111', '1111', '1111']
>>> ner_tagger.tag(sent)
[('my', 'O'),
 ('phone', 'O'),
 ('number', 'O'),
 ('is', 'O'),
 ('1111\xa01111\xa01111', 'NUMBER')]

рдЕрдкреЗрдХреНрд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:

>>> from nltk.parse.corenlp import CoreNLPParser
>>> ner_tagger = CoreNLPParser(url='http://localhost:9000', tagtype='ner')
>>> sent = ['my', 'phone', 'number', 'is', '1111', '1111', '1111']
>>> ner_tagger.tag(sent)
[('my', 'O'), ('phone', 'O'), ('number', 'O'), ('is', 'O'), ('1111', 'DATE'), ('1111', 'DATE'), ('1111', 'DATE')]

рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╕рдорд╛рдзрд╛рди properties рддрд░реНрдХреЛрдВ рдХреЛ .tag() рдФрд░ .tag_sents() рд▓рд┐рдП рдУрд╡рд░рд▓реЛрдбрд┐рдВрдЧ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдирд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд https://github.com/nltk/nltk/blob/develop/nltk/parse/ corenlp.py#L348 рдФрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ properties = {'tokenize.whitespace':'true'} рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдЯреЛрдХрди рдХреЛ tag_sents() рдореЗрдВ рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рд╕реЗ рдЬреЛрдбрд╝ рд░рд╣реЗ рд╣реИрдВред


    def tag_sents(self, sentences, properties=None):
        """
        Tag multiple sentences.

        Takes multiple sentences as a list where each sentence is a list of
        tokens.

        :param sentences: Input sentences to tag
        :type sentences: list(list(str))
        :rtype: list(list(tuple(str, str))
        """
        # Converting list(list(str)) -> list(str)
        sentences = (' '.join(words) for words in sentences)
        if properties == None:
            properties = {'tokenize.whitespace':'true'}
        return [sentences[0] for sentences in self.raw_tag_sents(sentences, properties)]

    def tag(self, sentence, properties=None):
        """
        Tag a list of tokens.

        :rtype: list(tuple(str, str))

        >>> parser = CoreNLPParser(url='http://localhost:9000', tagtype='ner')
        >>> tokens = 'Rami Eid is studying at Stony Brook University in NY'.split()
        >>> parser.tag(tokens)
        [('Rami', 'PERSON'), ('Eid', 'PERSON'), ('is', 'O'), ('studying', 'O'), ('at', 'O'), ('Stony', 'ORGANIZATION'),
        ('Brook', 'ORGANIZATION'), ('University', 'ORGANIZATION'), ('in', 'O'), ('NY', 'O')]

        >>> parser = CoreNLPParser(url='http://localhost:9000', tagtype='pos')
        >>> tokens = "What is the airspeed of an unladen swallow ?".split()
        >>> parser.tag(tokens)
        [('What', 'WP'), ('is', 'VBZ'), ('the', 'DT'),
        ('airspeed', 'NN'), ('of', 'IN'), ('an', 'DT'),
        ('unladen', 'JJ'), ('swallow', 'VB'), ('?', '.')]
        """
        return self.tag_sents([sentence], properties)[0]

    def raw_tag_sents(self, sentences, properties=None):
        """
        Tag multiple sentences.

        Takes multiple sentences as a list where each sentence is a string.

        :param sentences: Input sentences to tag
        :type sentences: list(str)
        :rtype: list(list(list(tuple(str, str)))
        """
        default_properties = {'ssplit.isOneSentence': 'true',
                              'annotators': 'tokenize,ssplit,' }

        default_properties.update(properties or {})

        # Supports only 'pos' or 'ner' tags.
        assert self.tagtype in ['pos', 'ner']
        default_properties['annotators'] += self.tagtype
        for sentence in sentences:
            tagged_data = self.api_call(sentence, properties=default_properties)
            yield [[(token['word'], token[self.tagtype]) for token in tagged_sentence['tokens']]
                    for tagged_sentence in tagged_data['sentences']]

рдпрд╣ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЯреЛрдХрди рдЗрдирдкреБрдЯ рдХреА рд╕реВрдЪреА рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

https://stackoverflow.com/questions/52250268/why-do-corenlp-ner-tagger-and-ner-tagger-join-the-separated-numbers-together рдкрд░ рд╡рд┐рд╡рд░рдг

рдпрджрд┐ рд╣рдо .tag() рдХреЛ raw_tag_sents рд╕реЗ рдкрд╣рд▓реЗ рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХреЛ рдЕрдзрд┐рднрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ #1876 рдЬреИрд╕реЗ рдорд╛рдорд▓реЛрдВ рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рд╕рдВрднрд╛рд▓рдиреЗ рдХреА рднреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред

bug goodfirstbug stanford api

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдЕрдЫрд╛ рд▓рдЧрддрд╛ рд╣реИред

рдмрд╕ рдХреБрдЫ рдЫреЛрдЯреА рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБред рдпрд╣ if properties is None рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рди рдХрд┐ if properties == None ред assert self.tagtype in ['pos', 'ner'] рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП assert self.tagtype in ['pos', 'ner'], "CoreNLP tagger supports only 'pos' or 'ner' tags." ред

рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рддрд╛рд░реЛрдВ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдиреЗ рдФрд░ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдкрд╕рдВрдж рдирд╣реАрдВ рд╣реИ, рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдХреЛрд░рдПрдирдПрд▓рдкреА рдХреЛ рд╢рдмреНрджреЛрдВ рдХреА рд╕реВрдЪреА рдХреЛ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рдмрдЬрд╛рдп рд╡рд╛рдХреНрдп рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд╕ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реЛред

рд╕рднреА 3 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдЕрдЫрд╛ рд▓рдЧрддрд╛ рд╣реИред

рдмрд╕ рдХреБрдЫ рдЫреЛрдЯреА рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБред рдпрд╣ if properties is None рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рди рдХрд┐ if properties == None ред assert self.tagtype in ['pos', 'ner'] рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП assert self.tagtype in ['pos', 'ner'], "CoreNLP tagger supports only 'pos' or 'ner' tags." ред

рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рддрд╛рд░реЛрдВ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдиреЗ рдФрд░ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдкрд╕рдВрдж рдирд╣реАрдВ рд╣реИ, рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдХреЛрд░рдПрдирдПрд▓рдкреА рдХреЛ рд╢рдмреНрджреЛрдВ рдХреА рд╕реВрдЪреА рдХреЛ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рдмрдЬрд╛рдп рд╡рд╛рдХреНрдп рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд╕ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реЛред

рдирдорд╕реНрддреЗ, рдореИрдВ рдЗрд╕реЗ рдЕрдкрдиреЗ рдкрд╣рд▓реЗ рдореБрджреНрджреЗ рдХреЗ рд░реВрдк рдореЗрдВ рд▓реЗрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред

рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕ рдореБрджреНрджреЗ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдкрдХреЗ рдХреЛрдИ рдкреНрд░рд╢реНрди рд╣реИрдВ, рддреЛ рдЙрдиреНрд╣реЗрдВ рдпрд╣рд╛рдВ рдкреВрдЫреЗрдВред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

libingnan54321 picture libingnan54321  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

jeryini picture jeryini  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

vezeli picture vezeli  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

stevenbird picture stevenbird  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

ndvbd picture ndvbd  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ