簡體   English   中英

Python NLP:使用 TextBlob、StanfordNLP 或 Google Cloud 識別句子的時態

[英]Python NLP: identifying the tense of a sentence using TextBlob, StanfordNLP or Google Cloud

(注意:我知道以前有過關於這個問題的帖子(例如這里這里,但它們已經很老了,我認為過去幾年 NLP 取得了相當大的進展。)

我正在嘗試使用 Python 中的自然語言處理來確定句子的時態。

是否有易於使用的軟件包? 如果沒有,我需要如何在 TextBlob、StanfordNLP 或 Google Cloud Natural Language API 中實施解決方案?

TextBlob 似乎最容易使用,我設法列出了 POS 標簽,但我不確定如何將輸出轉換為“時態預測值”或只是對時態的最佳猜測。 此外,我的文本是西班牙語,所以我更喜歡使用支持西班牙語的 GoogleCloud 或 StanfordNLP(或任何其他易於使用的解決方案)。

我還沒有設法使用 StanfordNLP 的 Python 接口。

谷歌雲自然語言 API 似乎提供了我所需要的(見這里,但我還沒有設法找出如何獲得這個輸出。我已經使用谷歌雲 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 的新手,因此非常感謝有關此主題的任何幫助! 謝謝!

我認為任何 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 不太熟悉。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM