[英]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.