微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Nltk Tokenizing 并通过保留句子添加 Bigrams

如何解决Nltk Tokenizing 并通过保留句子添加 Bigrams

我正在写我的学士论文,必须准备一个语料库来训练词嵌入。 我在想的是是否可以检查 ngram 的标记化句子或文本,然后将这些单个标记与 ngram 交换。

为了更清楚我的意思:

输入

var = ['Hello','Sherlock','Holmes','my','name','is','Mr','.','Watson','.']

期望输出

var = ['Hello','Sherlock_Holmes','Mr_Watson','.']

我知道沃森先生现在并不是一个完美的例子。但我在考虑这是否可能。

因为在不寻找 ngram 的情况下训练我的 word2vec 算法并不能很好地完成这项工作。

class MySentence():
    def __init__(self,dirname):
        self.dirname = dirname
        print('Hello init')
 
    def __iter__(self):
        
        for fname in os.listdir(self.dirname):
            txt = []
            for line in open(os.path.join(self.dirname,fname)):
                txt = nltk.regexp_tokenize(line,pattern='\w+|\$[\d\.]+|\S+')
                tokens = [token for token in tokens if len(token) > 1] #same as unigrams
                bi_tokens = bigrams(tokens)
                
                yield tri_tokens = trigrams(tokens)
     
sentences = MySentence(path)

解决方法

N-gram 只是相邻单词的序列,但它们不必在语言上有意义。例如,“Hello Sherlock”和“Holmes my”可能是 2 克。相反,听起来您正在寻找具有特定语言上下文或实体识别(“Sherlock Holmes”)的更复杂的标记化,这本身需要经过训练的模型。查看 NLTK 关于 documentationnltk.ne_chunk()rule-based chunking。或者对于开箱即用的解决方案,spaCy 的命名实体识别和标记化功能可以开始使用。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。