自然语言处理NLP 学习笔记
Python 机器人 Demo 源码编写
以下是一个简单的 Python 机器人 Demo 源码,使用 pyautogui
和 speech_recognition
库实现基本功能,如语音识别和自动化操作。
安装依赖库
确保安装以下库:
pip install pyautogui speechrecognition pyaudio
语音识别模块
import speech_recognition as srdef listen():recognizer = sr.Recognizer()with sr.Microphone() as source:print("请说话...")audio = recognizer.listen(source)try:text = recognizer.recognize_google(audio, language="zh-CN")print(f"你说的是: {text}")return textexcept Exception as e:print("未识别到语音")return None
自动化操作模块
import pyautogui
import timedef execute_command(command):if "打开浏览器" in command:pyautogui.hotkey("win", "r")pyautogui.typewrite("chrome")pyautogui.press("enter")elif "关闭窗口" in command:pyautogui.hotkey("alt", "f4")elif "截图" in command:screenshot = pyautogui.screenshot()screenshot.save("screenshot.png")
主程序循环
if __name__ == "__main__":while True:command = listen()if command:if "退出" in command:print("机器人已关闭")breakexecute_command(command)
自然语言处理NLP
使用 transformers
库或 NLTK
增强语音识别的意图分析能力。
文本分类
文本分类是NLP中常见的任务,用于将文本分配到预定义的类别中。例如,垃圾邮件检测、情感分析(判断评论是积极还是消极)或新闻主题分类。常用的库包括Scikit-learn、TensorFlow和PyTorch,结合预训练模型如BERT或RoBERTa可以显著提升性能。
from transformers import pipeline
classifier = pipeline("text-classification", model="distilbert-base-uncased-finetuned-sst-2-english")
result = classifier("I love using Python for NLP!")
print(result) # 输出: [{'label': 'POSITIVE', 'score': 0.9998}]
命名实体识别(NER)
NER用于识别文本中的实体(如人名、地点、组织等)。应用场景包括信息抽取、知识图谱构建。流行的工具包括SpaCy、Hugging Face Transformers和Stanford NLP。
import spacy
nlp = spacy.load("en_core_web_sm")
doc = nlp("Apple is looking at buying U.K. startup for $1 billion")
for ent in doc.ents:print(ent.text, ent.label_) # 输出: Apple ORG, U.K. GPE, $1 billion MONEY
具体NER介绍
实体识别(Named Entity Recognition,简称NER)是自然语言处理(NLP)中的一项基础任务,主要用于从非结构化的文本中识别和提取预定义类别中的命名实体。常见的实体类型包括人名、地名、组织机构名、时间、日期、货币金额、百分比等。
NER的主要应用场景
- 信息抽取:从大量文本中提取关键信息,如从新闻中识别重要人物、地点和事件
- 搜索引擎优化:帮助搜索引擎更好地理解网页内容,提升搜索结果的相关性
- 智能问答系统:准确理解用户问题中的关键实体,提高回答的精确度
- 知识图谱构建:作为知识图谱构建的前置步骤,识别文本中的实体和关系
- 医疗领域应用:识别医疗文本中的药物名称、疾病名称、症状等专业术语
NER的技术实现方法
-
规则方法:
- 基于字典的匹配
- 使用正则表达式
- 适用于特定领域且实体类型固定的场景
-
统计机器学习方法:
- 隐马尔可夫模型(HMM)
- 条件随机场(CRF)
- 最大熵马尔可夫模型(MEMM)
-
深度学习方法:
- BiLSTM-CRF模型
- Transformer架构(如BERT、RoBERTa等预训练模型)
- 近年来深度学习模型在NER任务中表现突出
NER的一般处理流程
- 文本预处理:包括分词、词性标注等基础NLP处理
- 特征提取:提取词法特征、上下文特征等
- 模型训练:使用标注数据训练实体识别模型
- 实体识别:对新文本进行实体识别和分类
- 后处理:对识别结果进行验证和修正
评估指标
NER系统的主要评估指标包括
- 准确率(Precision)
- 召回率(Recall)
- F1值(F1-score)
- 通常采用严格的评估标准,只有实体边界和类型都正确才算识别正确
机器翻译
机器翻译自动将一种语言的文本转换为另一种语言。Google的Transformer模型和Facebook的M2M-100是典型代表。Hugging Face的库提供了便捷的API。
translator = pipeline("translation_en_to_fr", model="t5-small")
result = translator("Hello, how are you?", max_length=40)
print(result) # 输出: [{'translation_text': 'Bonjour, comment allez-vous?'}]