当前位置: 首页 > 面试题库 >

NLTK-块语法不读逗号

欧阳昊焱
2023-03-14
问题内容
from nltk.chunk.util import tagstr2tree
from nltk import word_tokenize, pos_tag
text = "John Rose Center is very beautiful place and i want to go there with Barbara Palvin. Also there are stores like Adidas ,Nike ,Reebok Center."
tagged_text = pos_tag(text.split())

grammar = "NP:{<NNP>+}"

cp = nltk.RegexpParser(grammar)
result = cp.parse(tagged_text)

print(result)

输出:

(S
  (NP John/NNP Rose/NNP Center/NNP)
  is/VBZ
  very/RB
  beautiful/JJ
  place/NN
  and/CC
  i/NN
  want/VBP
  to/TO
  go/VB
  there/RB
  with/IN
  (NP Barbara/NNP Palvin./NNP)
  Also/RB
  there/EX
  are/VBP
  stores/NNS
  like/IN
  (NP Adidas/NNP ,Nike/NNP ,Reebok/NNP Center./NNP))

我用于分块的语法仅适用于nnp标记,但是如果单词与逗号连续,它们仍将在同一行上。

(S
  (NP John/NNP Rose/NNP Center/NNP)
  is/VBZ
  very/RB
  beautiful/JJ
  place/NN
  and/CC
  i/NN
  want/VBP
  to/TO
  go/VB
  there/RB
  with/IN
  (NP Barbara/NNP Palvin./NNP)
  Also/RB
  there/EX
  are/VBP
  stores/NNS
  like/IN
  (NP Adidas,/NNP)
  (NP Nike,/NNP)
  (NP Reebok/NNP Center./NNP))

我应该在“ grammar =“中写什么,还是可以像上面写的那样编辑输出?如您所见,我只为我的命名实体项目解析专有名词,请帮助我。


问题答案:

使用word_tokenize(string)代替string.split()

>>> import nltk
>>> from nltk.chunk.util import tagstr2tree
>>> from nltk import word_tokenize, pos_tag
>>> text = "John Rose Center is very beautiful place and i want to go there with Barbara Palvin. Also there are stores like Adidas ,Nike ,Reebok Center."
>>> tagged_text = pos_tag(word_tokenize(text))
>>> 
>>> grammar = "NP:{<NNP>+}"
>>> 
>>> cp = nltk.RegexpParser(grammar)
>>> result = cp.parse(tagged_text)
>>> 
>>> print(result)
(S
  (NP John/NNP Rose/NNP Center/NNP)
  is/VBZ
  very/RB
  beautiful/JJ
  place/NN
  and/CC
  i/NN
  want/VBP
  to/TO
  go/VB
  there/RB
  with/IN
  (NP Barbara/NNP Palvin/NNP)
  ./.
  Also/RB
  there/EX
  are/VBP
  stores/NNS
  like/IN
  (NP Adidas/NNP)
  ,/,
  (NP Nike/NNP)
  ,/,
  (NP Reebok/NNP Center/NNP)
  ./.)


 类似资料:
  • 问题内容: NLTK单词语料库没有短语“好”,“好”,“好”吗? 有什么想法吗? 问题答案: 在长 在文档中,单词是“ http://en.wikipedia.org/wiki/Words_(Unix) 在Unix中,您可以执行以下操作: 并阅读自述文件: 由于它是 234,936 的固定列表,因此该列表中 肯定 有不存在的单词。 如果需要扩展单词列表,则可以使用WordNet中的单词将单词添加到

  • 问题内容: 如何检测使用NLTK编写的文字是哪种语言? 我看到的示例使用,但是在Mac上安装后,找不到该软件包。 问题答案: 您是否遇到了以下代码片段? 来自http://groups.google.com/group/nltk- users/browse_thread/thread/a5f52af2cbc4cfeb?pli=1&safe=active 还是以下演示文件? https://web.

  • 本文向大家介绍Fortran 模块语法,包括了Fortran 模块语法的使用技巧和注意事项,需要的朋友参考一下 示例 模块是类型声明,数据声明和过程的集合。基本语法为:            

  • 以下内容旨在对ES2015规范中定义的模块行为做一个轻量级的参考,因为对导入和导出语句的正确理解对于成功使用Rollup是至关重要的。 导入(Importing) 导入的值不能重新分配,尽管导入的对象和数组可以被修改(导出模块,以及任何其他的导入,都将受到该修改的影响)。在这种情况下,它们的行为与const声明类似。 命名导入(Named Imports) 从源模块导入其原始名称的特定项目。 im

  • NLTK 会被自然地看作是具有栈结构的一系列层,这些层构建于彼此基础之上。那些熟悉人工语言(比如 Python)的文法和解析的读者来说,理解自然语言模型中类似的 —— 但更深奥的 —— 层不会有太大困难。 尽管 NLTK 附带了很多已经预处理(通常是手工地)到不同程度的全集,但是概念上每一层都是依赖于相邻的更低层次的处理。首先是断词;然后是为单词加上 标签;然后将成组的单词解析为语法元素,比如名词

  • 从以前的帖子中,我找到了一种方法来解析这种类型::结构: 这是一个具有键值对的简单 JSON。现在我想解析这个结构,而不管变量顺序如何。即,我想解析到同一个对象中,也是这个结构: 我知道我可以使用操作符来以任何顺序解析数据,但是我不知道如何处理行尾的逗号。我如何解析这两种结构? 这是上一篇文章中@sehe代码。语法在这里定义。