天天看點

自然語言處理NLP(一)

版權聲明:本文為部落客原創文章,遵循 CC 4.0 BY-SA 版權協定,轉載請附上原文出處連結和本聲明。

本文連結:https://blog.csdn.net/github_39655029/article/details/82896028

NLP
  • 自然語言:指一種随着社會發展而自然演化的語言,即人們日常交流所使用的語言;
  • 自然語言處理:通過技術手段,使用計算機對自然語言進行各種操作的一個學科;
NLP研究的内容
  • 詞意消歧;
  • 指代了解;
  • 自動生成語言;
  • 機器翻譯;
  • 人機對話系統;
  • 文本含義識别;
NLP處理
  • 語料讀入
    • 網絡
    • 本地
  • 分詞
自然語言處理NLP(一)
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2018-9-28 22:21
# @Author  : Manu
# @Site    : 
# @File    : python_base.py
# @Software: PyCharm

import urllib
from nltk import word_tokenize
from bs4 import BeautifulSoup

# 線上文檔下載下傳
url = 'http://www.gutenberg.org/files/2554/2554-0.txt'
res = urllib.request.urlopen(url)
raw = res.read().decode('utf8')
print('length', len(raw))
print('type', type(raw))
print(raw[:100])

# 分詞
tokens = word_tokenize(raw)
print(tokens[:50])
print('length:' + str(len(tokens)))
print('type:', type(tokens))

# 建立文本
text = nltk.Text(tokens)
print('type', type(text))
print('length', len(text))
print(text)           

複制

  • 基于此機關的文本分析
    • 正規表達式
    自然語言處理NLP(一)
  • 分割
    • 斷句
    • 分詞
  • 規範化輸出
中文分詞及相應算法
  • 基于字典、詞庫比對;
    • 正向最大比對;
    • 逆向最大比對;
    • 雙向最大比對;
    • 設立切分表執法;
    • 最佳比對;
  • 基于詞頻度統計;
    • N-gram模型;
    • 隐馬爾科夫模型;
    • 基于字标注的中文分詞方法;
  • 基于知識了解;
分詞方法比較
自然語言處理NLP(一)
結巴分詞
  • 安裝

    在控制台使用

    pip install jieba

    即可安裝;
自然語言處理NLP(一)
  • 功能
    • 分詞;
      • jieba.cut

        jieba.cut_for_search

    • 添加自定義詞典;
      • jieba.load_userdict(file_name)

        add_word(word, freq=None, tag=None)

        jieba.del_word(word)

        jieba.suggest_freq(segmen, tune=True)

    • 關鍵詞提取;
      • jieba.analyse.extract_tags(sentence, topK=20, withWeight=False, allowPOS=())

      • jieba.analyse.set_idf_path(file_name)

      • jieba.analuse.set_stop_words(file_name)

    • 詞性标注;
      • jieba.tokenize()

      • jieba.posseg.cut()

    • 并行分詞;
    • 詞彙搜尋;