NLP学习笔记 01 分词、词性标注和关键词提取

本文介绍了在自然语言处理(NLP)中如何通过加载自定义词典和使用正则表达式来提高jieba分词的准确性。在准确分词level1部分,详细展示了创建自定义词典和调整词频的方法。接着,提到了词性标注的重要性,并使用hanlp进行了演示。最后,讨论了关键词提取,推荐了使用jieba的textrank函数来实现。
摘要由CSDN通过智能技术生成

1.1 准确分词 level1

中文自动分词的方法主要有三种

  • 规则分词
  • 统计分词
  • 混合分词(规则 + 统计)

调包时如何提高分词准确性:

  • 加载自定义词典
  • 使用正则表达式

使用jieba自定义词典 + 正则表达式准确分词

在代码的同级目录下创建词典(txt文件):
在这里插入图片描述

创建输入文本 text.txt:

恶性肿瘤的分期越高,患者预后越差。通过对肿瘤不同恶性程度的划分,TNM分期在预测预后方面不断完善。
但是有国外研究发现,部分结肠癌的预后并不能完全按照一般的分期阶梯进行预测。
TNM分期不太能明确地区分||期和III期结肠癌患者的预后ii期,特别是在接受辅助化疗的患者中,他们的5年总生存期在50.1%-9.8%。
此外已知影响结肠癌生存的患者或疾病特征,包括年龄、性别、原发疾病位置、肿瘤分级、阳性淋巴结数目(LNs)、接受检查的
LNs数目、淋巴管和周围神经浸润、肠道梗阻或穿孔、以及辅助治疗(氟尿嘧啶单药或联合奥沙利铂),并未直接纳入TNM分期系统。
在多变量模型中,分子标记的微卫星不稳定性(MSI)和BRAF或KRAS基因突变联合详细的临床病理学诠释可以多大程度改善预后评估
目前尚不清楚。近期,发表在Annals of oncology杂志上的一项回顾性研究,在TNM分期系统基础上联合汇集的标志物对II期和III期
结肠癌总生存期进行预测。
研究人员将缺失随机数据插补后,利用3期辅助化疗试验(n=3016)—N0147(NCT00079274)和PETACC3(NCT00026273)—产生的患者亚组
聚集构建了一个5年总生存期多变量Cox模型,随后在剩余的临床试验样本(n=1499)中进行内部验证,并且还在不同人群队列中外部分析,
包括接受化疗(n=949)或者未接受化疗(n=1080)的结肠癌患者,以及没有治疗注释患者。
研究分析发现:
在根据临床试验队列和观察性研究做出的多变量模型中,TMN分期,MSI和BRAFV600E基因突变状态仍然是独立预后因素。
单纯TNM模型的一致性指数(Concordance-indices)为0.61-0.68,而增加分子标记物、临床病理特征和所有协变量后的
一致性指数分别增加至0.63-0.71、0.65-0.73和0.66-0.74。
在有完整注释的验证队列中,单独TNM的综合时间依赖AUC值为0.64,纳入临床病理特征联合或不联合分子标记物的AUC增加为0.67。
在接受辅助化疗的患者队列中,通过TNM、临床病理特征和分子标记物的方差(R2)相对比例平均值分别为65%、25%和10%。
因此,将MSI、BRAFV600E和KRAS基因突变状态纳入TNM分期系统的总生存期模型可以提高精确预测II期和III期结肠癌患者的能力,
而且包括临床病理特征的多变量模型中会增加预测准确性,特别是需要接受化疗的患者。

代码:

# -*- coding=utf8 -*-
import jieba
import re

jieba.load_userdict("dict.txt")


# 合并两个list
def merge_two_list(a, b):
    c = []
    len_a, len_b = len(a), len(b)
    minlen = min(len_a, len_b)
    for i in range(minlen):
        c.append(a[i])
        c.append(b[i])

    if len_a > len_b:
        for i in range(minlen, len_a):
            c.append(a[i])
    else:
        for i in range(minlen, len_b):
            c.append(b[i])
    return c


if __name__ == "__main__":
    # open the inp
您可以使用 Java Native Interface(JNI)来调用 hasp_net_windows_x64.dll。以下是一些一般步骤: 1. 创建一个 Java 类,其包含本地方法声明。例如: ```java public class HaspNative { public static native int hasp_login(int feature_id, String vendor_code); public static native int hasp_logout(int handle); // 其他本地方法声明 } ``` 2. 编译该类并生成一个头文件。您可以使用命令 `javah` 来生成头文件。例如: ```bash javah -classpath . -jni HaspNative ``` 3. 打开头文件,根据需要包含其他头文件和库文件。例如: ```c #include <jni.h> #include "HaspNative.h" #include "hasp_api.h" ``` 4. 在头文件实现本地方法。例如: ```c JNIEXPORT jint JNICALL Java_HaspNative_hasp_1login(JNIEnv *env, jclass cls, jint feature_id, jstring vendor_code) { const char *vc = (*env)->GetStringUTFChars(env, vendor_code, 0); hasp_handle_t handle; hasp_status_t status = hasp_login(feature_id, vc, &handle); (*env)->ReleaseStringUTFChars(env, vendor_code, vc); if (status != HASP_STATUS_OK) { // 处理错误 } return handle; } ``` 5. 编译并链接本地库。例如: ```bash gcc -shared -I${JAVA_HOME}/include -I${JAVA_HOME}/include/win32 -o HaspNative.dll HaspNative.c hasp_net_windows_x64.dll ``` 6. 在 Java 代码加载本地库并调用本地方法。例如: ```java public class Main { static { System.loadLibrary("HaspNative"); } public static void main(String[] args) { int handle = HaspNative.hasp_login(1234, "ABCD-1234-EFGH-5678"); // 使用 handle 调用其他 hasp 函数 } } ``` 以上步骤仅供参考。具体实现可能因您的实际需求而异。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值