当前位置:   article > 正文

自然语言处理 实验二:词性标注与命名实体识别_分词和命名实体的实验

分词和命名实体的实验

一、实验目的:

1.掌握中文分词工具包的使用。

2.掌握基于LTP的词性标注的使用。

3.掌握基于LTP的命名实体识别的使用。

二、实验设备及分组:

1. PC机或笔记本电脑若干;

2. Window 7及以上版本操作系统;

3. Python 运行环境;

4.安装和配置Anaconda。

三、实验任务及要求

文章素材:庐山,位于江西省九江市南,雄峙于长江之滨、鄱阳湖畔,东距鄱阳湖长岭-屏峰卡口7千米,是一座变质岩断石山,其拔地而起,主峰大汉阳峰高程1474米。庐山不仅风景秀丽,而且文化内涵深厚,更集教育名山、文化名山、宗教名山、政治名山于一身。从司马迁“南登庐山”,到陶渊明、李白、白居易、苏轼、王安石、黄庭坚、陆游、朱熹、康有为、胡适、郭沫若等文坛巨匠或陈运和等诗文名家1500余位登临庐山,留下4000余首诗词歌赋。1996年,庐山被联合国教科文组织确定为世界文化遗产,列入《世界遗产名录》。

1.对给定的上述文章素材进行分词。

2.基于文章素材得到的分词结果,进行词性标注,查看标注结果。

3.基于文章素材得到的分词结果,进行命名实体识别,查看识别结果。

4.根据得到的识别结果,提取识别结果中的人名,地名,组织机构名。

四、实验过程及实验步骤:(手写完成:要求写出实验步骤,要求书写规范,字迹切勿潦草。)

1.对给定的上述文章素材进行分词。

注意文件的位置记得换(否则编译会出错)

  1. from pyltp import Segmentor,SentenceSplitter,Postagger,NamedEntityRecognizer
  2. #中文分词
  3. #加载分词模型
  4. seg= Segmentor("D:\\python_data\\ltp_data_v3.4.0\\ltp_data_v3.4.0\\cws.model")
  5. #加载词性模型
  6. pos=Postagger("D:\\python_data\\ltp_data_v3.4.0\\ltp_data_v3.4.0\\pos.model")
  7. #加载命名实体识别模型
  8. ner=NamedEntityRecognizer("D:\\python_data\\ltp_data_v3.4.0\\ltp_data_v3.4.0\\ner.model")
  9. text='庐山,位于江西省九江市南,雄峙于长江之滨、鄱阳湖畔,东距鄱阳湖长岭-屏峰卡口7千米,是一座变质岩断石山,其拔地而起,主峰大汉阳峰高程1474米。庐山不仅风景秀丽,而且文化内涵深厚,更集教育名山、文化名山、宗教名山、政治名山于一身。从司马迁“南登庐山”,到陶渊明、李白、白居易、苏轼、王安石、黄庭坚、陆游、朱熹、康有为、胡适、郭沫若等文坛巨匠或陈运和等诗文名家1500余位登临庐山,留下4000余首诗词歌赋。1996年,庐山被联合国教科文组织确定为世界文化遗产,列入《世界遗产名录》。'
  10. words = seg.segment(text) #分词
  11. for word in words:
  12. print(word,end='\\')

2.基于文章素材得到的分词结果,进行词性标注,查看标注结果。

  1. postags=pos.postag(words)
  2. for word,postag in zip(words,postags):
  3. print(word,postag,end='\\')

3.基于文章素材得到的分词结果,进行命名实体识别,查看识别结果。

  1. netags=ner.recognize(words,postags)
  2. for word2,netag in zip(words,netags):
  3. print(word2,netag,end='\\')

4.根据得到的识别结果,提取识别结果中的人名,地名,组织机构名。

  1. names=set()
  2. i=0
  3. for tag,word in zip(netags,words):
  4. j=i
  5. if "Nh" in tag:
  6. if tag.startswith("S"):
  7. names.add(word)
  8. elif tag.startswith("B"):
  9. name=word
  10. while netags[j]!='E-Nh':
  11. j+=1
  12. name+=words[j]
  13. names.add(name)
  14. i+=1
  15. print(names)

  1. #提取识别到的地名
  2. places=set()
  3. i=0
  4. for tag,word in zip(netags,words):
  5. j=i
  6. if "Ns" in tag:
  7. if tag.startswith("S"):
  8. places.add(word)
  9. elif tag.startswith("B"):
  10. place=word
  11. while netags[j]!='E-Ns':
  12. j+=1
  13. place+=words[j]
  14. places.add(place)
  15. i+=1
  16. print(places)

  1. #提取识别到的组织机构名
  2. organizations=set()
  3. i=0
  4. for tag,word in zip(netags,words):
  5. j=i
  6. if "Ni" in tag:
  7. if tag.startswith("S"):
  8. organizations.add(word)
  9. elif tag.startswith("B"):
  10. organization=word
  11. while netags[j]!='E-Ni':
  12. j+=1
  13. organization+=words[j]
  14. organizations.add(organization)
  15. i+=1
  16. print(organizations)

       

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Li_阴宅/article/detail/930585
推荐阅读
相关标签
  

闽ICP备14008679号