1. 程式人生 > >自然語言處理NLP(一)

自然語言處理NLP(一)

rac 控制臺 分析 arm ont 正則表達 stop python none

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)
  • 基於此單位的文本分析
    • 正則表達式
      技術分享圖片
  • 分割
    • 斷句
    • 分詞
  • 規範化輸出

中文分詞及相應算法

  • 基於字典、詞庫匹配;
    • 正向最大匹配;
    • 逆向最大匹配;
    • 雙向最大匹配;
    • 設立切分表執法;
    • 最佳匹配;
  • 基於詞頻度統計;
    • N-gram模型;
    • 隱馬爾科夫模型;
    • 基於字標註的中文分詞方法;
  • 基於知識理解;

分詞方法比較

技術分享圖片

結巴分詞

  • 安裝
    在控制臺使用pip install jieba即可安裝;
    技術分享圖片
  • 功能
    • 分詞;
      • jieba.cutjieba.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()
    • 並行分詞;
    • 詞匯搜索;

自然語言處理NLP(一)