smoothnlp / SmoothNLP

专注于可解释的NLP技术 An NLP Toolset With A Focus on Explainable Inference
GNU General Public License v3.0
624 stars 112 forks source link

处理语料时会遗漏掉每句话的最后一个n元词组 #26

Closed siam1991 closed 4 years ago

siam1991 commented 4 years ago

处理语料,遍历句子,进行字符和单词抽取的时候,总是遗漏掉每句话的最后一个词 应该是ngram_utils.py中的下面代码导致了问题

def generate_ngram(corpus,n:int=2):
         def generate_ngram_str(text:str,n):
            for i in range(0,len(text)-n):
                yield text[i:i+n]

range(min,max) 在取值时,不会取到max的值 sample: 无人货架启动和运营成本貌似最低 结果 ngram=1 ['无', '人', '货', '架', '启', '动', '和', '运', '营', '成', '本', '貌', '似', '最'] ngram=2 ['无人', '人货', '货架', '架启', '启动', '动和', '和运', '运营', '营成', '成本', '本貌', '貌似', '似最'] ngram=3 ['无人货', '人货架', '货架启', '架启动', '启动和', '动和运', '和运营', '运营成', '营成本', '成本貌', '本貌似', '貌似最'] 应当改为for i in range(0, len(text)-n+1)

victorzhrn commented 4 years ago

感谢意见! 欢迎直接提交pull request到源码, 我们会在发布v0.3版本的时候解决这个问题. 再次感谢!

victorzhrn commented 4 years ago

已经发布