Как покончить с тегами Unigram с вероятностью тега? - PullRequest
0 голосов
/ 09 января 2019

Я создаю класс Unigram Tagger. Я полагаю, что я нахожусь на заключительной стадии, хотя я теперь потерян на том, как определить вероятности тегов. До сих пор я достиг подсчета общего количества тегов, общего количества слов и, наконец, подсчета каждого тега на каждое слово. И конечно же тренировка.

Для учетных записей я получаю:

{'PRON': 2820, 'VERB': 6201, ...

Для WordCounts я получаю:

{'i': 531, 'need': 3, "n't": 213, 'be': 145, ...

Для tagperwordcounts я получаю:

{'i': {'PRON': 531}, 'need': {'VERB': 3}, "n't": {'ADV': 213}, 'be': {'VERB': 145}, 'afraid': {'ADJ': 12}, 'of': {'ADP': 502, 'ADV': 10}, ...

И формула, которую я вполне уверен, что я должен использовать, чтобы определить вероятности:

? (?│?) = («количество вхождений« ? », помеченных как« ?) / (»количество вхождений« ?)

Хотя я не уверен, как поместить это в код?

class unigram_tagging():

    def __init__(self,traind=[]):
        self.tagcounts={}
        self.wordcounts={}
        self.tagperwordcounts={}
        self.train(traind=traind)

    def train(self,traind):
        for sentence in traind:
            for token,tag in sentence:
                self.tagcounts[tag]=self.tagcounts.get(tag,0)+1
                self.wordcounts[token]=self.wordcounts.get(token,0)+1
                current=self.tagperwordcounts.get(token,{})
                current[tag]=current.get(tag,0)+1
                self.tagperwordcounts[token]=current

    def tag(self,traind): #Here I want to work out probability

Идея состоит в том, что этот последний метод назначит тег, который максимизирует вероятность тега.

...