簡體   English   中英

沒有標點符號的文本中的句子注釋

[英]Sentence annotation in text without punctuation

我很難讓 CoreNLP 系統在詩歌語料庫中正確找到一個句子的結尾和另一個句子的開頭。

掙扎的原因:

  • 有些詩在整個長度中沒有標點符號(有時沒有大小寫)
  • 有些詩的句子從一段延伸到另一段
  • 有些詩在每一行的開頭都有大寫

這是一個特別棘手的問題(系統認為第一句以第二節開頭的“.”結尾)

鑒於缺少大寫字母和標點符號,我想我會嘗試使用-tokenizeNLs來查看是否有所改進,但它過分了,並切斷了在空白行之間運行的任何句子(有幾個)

這些句子通常在一行的末尾結束,但並非總是如此,所以如果系統可以將行結尾視為句子中斷的潛在候選者,並且可能權衡這些是端點的可能性,那將是明智之舉,但我不知道我將如何實施。

有沒有一種優雅的方法來做到這一點? 或者替代方案?

提前致謝!

這里的預期句子輸出)

這將是一個整潔的項目! 我認為目前我們小組中沒有人正在研究它,但我認為如果你制作一個補丁,我們沒有理由不加入補丁。 我看到的最大挑戰是我們的句子分割器目前完全基於規則,因此這些“軟”決策相對難以合並。

您的案例的可能解決方案可能是使用語言模型“句末”概率(三個選項,無特定順序: https//kheafield.com/code/kenlm/,https//code.google.com/ p / berkeleylm /http://www.speech.sri.com/projects/srilm/ )。 然后,具有足夠高的句子結束概率的行結束可以被拆分為新句子。

我建立了一個句子分段器,它可以很好地處理未經中斷或部分間斷的文本。 您可以在https://github.com/bedapudi6788/deepsegment找到它。

該模型基於命名實體識別可用於句子邊界(即:句子的開頭或句子的結尾)的想法。 我利用來自tatoeba的數據生成訓練數據,並訓練了BiLSTM + CRF模型,其中包括手套嵌入和角色級別。

雖然這是用Python構建的,但您可以使用flask設置一個簡單的rest api,並將其與Java代碼一起使用。

我推薦NNSPLIT用於 NLP 任務,包括句子邊界檢測,因為它簡單、快速且易於使用。 您還可以在此鏈接中查看以下案例的指標。

  • 干凈的
  • 部分標點符號
  • 部分案例
  • 部分標點符號和大小寫
  • 沒有標點符號和大小寫

pip 安裝 nnsplit

from nnsplit import NNSplit
splitter = NNSplit.load("en")

# returns `Split` objects
splits = splitter.split(["This is a test This is another test"])[0]

# a `Split` can be iterated over to yield smaller splits or stringified with `str(...)`.
for sentence in splits:
   print(sentence)

暫無
暫無

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

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