【问题标题】:Python NLP: identifying the tense of a sentence using TextBlob, StanfordNLP or Google CloudPython NLP:使用 TextBlob、StanfordNLP 或 Google Cloud 识别句子的时态
【发布时间】:2019-09-06 08:37:22
【问题描述】:

(注意:我知道以前有关于这个问题的帖子(例如herehere,但它们已经相当老了,我认为过去几年 NLP 已经取得了相当大的进展。 )

我正在尝试使用 Python 中的自然语言处理来确定句子的时态。

是否有一个易于使用的软件包?如果没有,我需要如何在 TextBlob、StanfordNLP 或 Google Cloud Natural Language API 中实施解决方案?

TextBlob 似乎最容易使用,并且我设法列出了 POS 标签,但我不确定如何将输出转换为“时态预测值”或只是对时态的最佳猜测。此外,我的文本是西班牙语,所以我更喜欢使用支持西班牙语的 GoogleCloud 或 StanfordNLP(或任何其他易于使用的解决方案)。

我还没有设法使用 StanfordNLP 的 Python 接口。

Google Cloud Natural Language API 似乎提供了我所需要的东西(请参阅here,但我还没有设法找出如何获得此输出。我已将 Google Cloud NLP 用于其他分析(例如实体情绪分析)并且它已经奏效了,所以如果我找到正确的使用示例,我相信我可以设置它。

文本块示例:

from textblob import TextBlob
from textblob.taggers import NLTKTagger
nltk_tagger = NLTKTagger()
blob = TextBlob("I am curious to see whether NLP is able to predict the tense of this sentence., pos_tagger=nltk_tagger)
print(blob.pos_tags)

-> 这会打印出 pos 标签,我如何将它们转换为对这句话时态的预测?

Google Cloud NLP 示例(设置凭据后):

from google.cloud import language
from google.cloud.language import enums
from google.cloud.language import types
text = "I am curious to see how this works"
client = language.LanguageServiceClient()
document = types.Document(
    content=text,
    type=enums.Document.Type.PLAIN_TEXT)

tense = (WHAT NEEDS TO COME HERE?)
print(tense)

->我不确定预测时态需要输入的代码(在代码中注明)

我是 Python 的新手,因此非常感谢您对这个主题的任何帮助!谢谢!

【问题讨论】:

    标签: python google-cloud-platform nlp stanford-nlp part-of-speech


    【解决方案1】:

    我认为任何 NLP 工具包都没有立即检测过去时态的功能。但是你可以简单地从依赖解析和词性标记中得到它。

    对句子进行依存分析,并查看作为句子主要谓词的词根及其 POS 标签。如果是VBD(动词是过去式),肯定是过去式。如果是VB(基本形式)或VBG(动名词),则需要检查其依赖子项并检查是否存在具有VBD 标签的助动词(deprel 为aux)。

    如果您还需要涵盖现在/过去完美或过去的模型表达式(我一定有...),您可以扩展条件。

    spacy(我最喜欢的 Python 的 NLP 工具包)中,你可以这样写(假设你的输入是一个句子):

    import spacy
    nlp = spacy.load('en_core_web_sm')
    
    def detect_past_sentece(sentence):
        sent = list(nlp(sentence).sents)[0]
        return (
            sent.root.tag_ == "VBD" or
            any(w.dep_ == "aux" and w.tag_ == "VBD" for w in sent.root.children))
    

    使用 Google Cloud API 或 StanfordNLP 基本相同,只是我对 API 不太熟悉。

    【讨论】:

    • 感谢您的建议!我试过了,但收到以下错误消息:“OSError:[E050] 找不到模型‘en_core_web_sm’。它似乎不是快捷链接、Python 包或数据目录的有效路径。 "您能否仔细检查链接或让我知道如何找到正确的链接?谢谢!
    • 使用spacy需要单独下载NLP模型,见spacy.io/usage/models。运行python -m spacy download en_core_web_sm
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 2017-10-28
    • 1970-01-01
    • 2017-11-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多