御宅童子 2023-07-07 17:21 采纳率: 33.3%
浏览 21
已结题

有啥能像jieba一样把一段英文句子拆成几组相关的词组吗?

比如说 this is a good test,我要提出来 “this” “is ” “a ” “good test”。在处理一个文本要进行对高频词进行提取时,会出现有大量单一个存在没有什么参考价值的名词,这时候往往就要带上前面的形容词。但是nltk库貌似只能实现把句子拆成每一个单词,有无想jieba那样的英文词语识别组合的工具可以解决这个问题?如果没有,那如何实现我想要的效果。谢谢佬们了

  • 写回答

1条回答 默认 最新

  • 憧憬blog 2023-07-07 18:17
    关注

    有类似于jieba的英文分词工具,例如NLTK、spaCy、TextBlob等。这些工具可以将英文文本分成单词、短语和命名实体等单位。

    在NLTK中,您可以使用分块(chunking)技术将邻近的词组合成短语。下面是一个简单的示例代码:

    import nltk
    from nltk.tokenize import word_tokenize
    from nltk.chunk import RegexpParser
    
    # 定义正则表达式来匹配名词短语
    grammar = r"""
      NP: {<DT|PP\$>?<JJ>*<NN>}   # 匹配形容词+名词
          {<NNP>+}                # 匹配连续的专有名词
          {<PRP>}                 # 匹配人称代词
    """
    
    # 创建分块器
    chunk_parser = RegexpParser(grammar)
    
    # 分词
    text = "This is a good test. I like it."
    tokens = word_tokenize(text)
    
    # 标记词性
    tagged_tokens = nltk.pos_tag(tokens)
    
    # 进行分块
    tree = chunk_parser.parse(tagged_tokens)
    
    # 提取名词短语
    noun_phrases = []
    for subtree in tree.subtrees(filter=lambda t: t.label() == 'NP'):
        noun_phrases.append(' '.join(word for word, tag in subtree.leaves()))
    
    print(noun_phrases)  # ['a good test', 'it']
    

    在上面的代码中,我们首先使用NLTK的word_tokenize函数将文本分成单词,然后使用nltk.pos_tag函数标记每个单词的词性。接下来,我们定义了一个简单的正则表达式来匹配名词短语,并将其传递给RegexpParser对象创建一个分块器。最后,我们使用分块器将文本分块,并提取所有的名词短语。

    请注意,这只是一个简单的示例,具体的分块规则可以根据您的需求进行修改和优化。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 7月16日
  • 已采纳回答 7月8日
  • 创建了问题 7月7日

悬赏问题

  • ¥30 udp socket,bind 0.0.0.0 ,如何自动选取用户访问的服务器IP来回复数据
  • ¥15 大一新生的编程,不知道该怎么弄。
  • ¥15 关于树的路径求解问题
  • ¥15 yolo在训练时候出现File "D:\yolo\yolov5-7.0\train.py"line 638,in <module>
  • ¥30 戴尔inspiron独显直连
  • ¥15 进行一项代码设计遇到问题
  • ¥15 Mutisim中关于74LS192N计数器芯片设计(计数器)
  • ¥50 fastadmin后台无法删除文件
  • ¥15 oracle查询Socket read timed out错误
  • ¥15 matlab支持向量机使用错误