NLP学习笔记

    xiaoxiao2023-10-29  160

    text = text.lower()  //全部小写

    import re

    text = re.sub(r”[a-zA-Z0-9]”,” ”,text)  //标点移除

    //标记化(Tokenization )

    Words = text.split() //以空格分词  ‘,’也会被分为一个词

    //NLTK 自然语言工具包

    From nltk.tokenize import word_tokenize

    Words = word_tokenize(text)

    //这种方法 Dr.会被分为一个词

    From nltk.tokenize import sent_tokenize

    Sents = sent_tokenize(text)

    //停用词

    From nltk.corpus import stopwords

    Words = [w for w in words if w not in stopwords.words(“english”)]

    //词性标注

    From nltk import pos_tag

    words = word_tokenize(text)

    pos = Pos_tag(words)

    //命名实体识别

    From nltk import pos_tag,ne_chunk

    From nltk.tokenize import word_tokenize

    words = word_tokenize(text)

    pos = Pos_tag(words)

    Ne_chunk(pos)

    //词干提取(stemming)

    //将词还原成词干或词根,对内存要求较低

    eg: branching/branched/branches->branch

    //但是有时会生成不是完整单词的词干,比如changing->chang

    From nltk.stem.porter import PorterStemmer

    Stemmed = [PorterStemmer().stem(w) for w in words] (words已去除停用词)

    //词形还原器(Lemmatization)

    //与上面那个区别在于基于词典(好像是),生成有含义的词,比如changing->change

    eg:is/are/am -> be

    From nltk.stem.porter import WordNetLemmatizer

    Lemmed = [wordNetLemmatizer().lemmatize(w) for w in words]

    //默认转换n,可指定词性

    Lemmed = [wordNetLemmatizer().lemmatize(w,pos = “v”) for w in words]

    //常用方法是先lemmatization,后stemming

     

    深度学习自然语言运算:

    词袋模型:

    可用于比较两个文档中有多少共词或词频相似度

    计算两个向量之间的点积

    缺陷:只捕捉重叠部分

    改进:计算余弦相似度(-1,1)

    1表示相似度最高,-1表示相似度最低

    词袋模型的另一个限制是将每个词的重要性同等对待

    TF-IDF:

    独热编码

    单词嵌入:

    Word2Vec 词->向量  正向嵌入

    给出相邻词、给出中间词

     

    GloVe  全局向量

    t-SNE  t分布随机邻域嵌入,是一种降维技术,

    有点像PCA(主成分分析),

    但在转换时,尝试保持对象之间的的相对距离

    可用于词嵌入可视化

     

    主题建模 Topic Modeling

    LDA 潜在狄克雷分布

     

     

    最新回复(0)