stanfordnlp / stanza

Stanford NLP Python library for tokenization, sentence segmentation, NER, and parsing of many human languages
https://stanfordnlp.github.io/stanza/
Other
7.14k stars 880 forks source link

when i use depprase for denpendency analysis with chinese in client, the results:root:3;rootnode:2?it is correct? can rootnode be a numer over 0? #1379

Closed xy1137030414 closed 2 months ago

xy1137030414 commented 3 months ago

this is my coding: f``` rom stanza.server import CoreNLPClient text = " 天河潭位于贵州省贵阳市花溪区石板镇,是以典型喀斯特自然风光为主、历史名人隐士文化为辅的风景名胜区,距贵阳市中心24公里,距花溪13公里,总面积为15平方公里。" with CoreNLPClient( annotators=['tokenize','ssplit','pos','lemma','ner', 'parse', 'depparse','coref'], timeout=30000, memory='6G', properties="chinese", endpoint="http://localhost:9008", outputFormat='json') as client: ann = client.annotate(text) for sentence in ann.sentence: print(sentence.basicDependencies)



_**this is output:**_
2024-04-06 11:09:45 INFO: Using CoreNLP default properties for: chinese.  Make sure to have chinese models jar (available for download here: https://stanfordnlp.github.io/CoreNLP/) in CLASSPATH
2024-04-06 11:09:45 INFO: Starting server with command: java -Xmx6G -cp E:\edge浏览器下载的文件\stanford-corenlp-4.5.6\* edu.stanford.nlp.pipeline.StanfordCoreNLPServer -port 9008 -timeout 30000 -threads 5 -maxCharLength 100000 -quiet False -serverProperties chinese -annotators tokenize,ssplit,pos,lemma,ner,parse,depparse,coref -preload -outputFormat serialized
node {
  sentenceIndex: 0
  index: 2
}
node {
  sentenceIndex: 0
  index: 1
}
node {
  sentenceIndex: 0
  index: 3
}
node {
  sentenceIndex: 0
  index: 7
}
node {
  sentenceIndex: 0
  index: 4
}
node {
  sentenceIndex: 0
  index: 5
}
node {
  sentenceIndex: 0
  index: 6
}
node {
  sentenceIndex: 0
  index: 8
}
node {
  sentenceIndex: 0
  index: 24
}
node {
  sentenceIndex: 0
  index: 9
}
node {
  sentenceIndex: 0
  index: 14
}
node {
  sentenceIndex: 0
  index: 10
}
node {
  sentenceIndex: 0
  index: 11
}
node {
  sentenceIndex: 0
  index: 12
}
node {
  sentenceIndex: 0
  index: 13
}
node {
  sentenceIndex: 0
  index: 15
}
node {
  sentenceIndex: 0
  index: 16
}
node {
  sentenceIndex: 0
  index: 20
}
node {
  sentenceIndex: 0
  index: 17
}
node {
  sentenceIndex: 0
  index: 18
}
node {
  sentenceIndex: 0
  index: 19
}
node {
  sentenceIndex: 0
  index: 21
}
node {
  sentenceIndex: 0
  index: 22
}
node {
  sentenceIndex: 0
  index: 23
}
node {
  sentenceIndex: 0
  index: 25
}
node {
  sentenceIndex: 0
  index: 26
}
node {
  sentenceIndex: 0
  index: 28
}
node {
  sentenceIndex: 0
  index: 27
}
node {
  sentenceIndex: 0
  index: 29
}
node {
  sentenceIndex: 0
  index: 30
}
node {
  sentenceIndex: 0
  index: 31
}
node {
  sentenceIndex: 0
  index: 32
}
node {
  sentenceIndex: 0
  index: 33
}
node {
  sentenceIndex: 0
  index: 34
}
node {
  sentenceIndex: 0
  index: 35
}
node {
  sentenceIndex: 0
  index: 36
}
node {
  sentenceIndex: 0
  index: 38
}
node {
  sentenceIndex: 0
  index: 37
}
node {
  sentenceIndex: 0
  index: 39
}
node {
  sentenceIndex: 0
  index: 40
}
node {
  sentenceIndex: 0
  index: 41
}
node {
  sentenceIndex: 0
  index: 42
}
edge {
  source: 2
  target: 1
  dep: "name"
  isExtra: false
  sourceCopy: 0
  targetCopy: 0
  language: Chinese
}
edge {
  source: 3
  target: 2
  dep: "nsubj"
  isExtra: false
  sourceCopy: 0
  targetCopy: 0
  language: Chinese
}
edge {
  source: 3
  target: 7
  dep: "dobj"
  isExtra: false
  sourceCopy: 0
  targetCopy: 0
  language: Chinese
}
edge {
  source: 3
  target: 8
  dep: "punct"
  isExtra: false
  sourceCopy: 0
  targetCopy: 0
  language: Chinese
}
edge {
  source: 3
  target: 24
  dep: "conj"
  isExtra: false
  sourceCopy: 0
  targetCopy: 0
  language: Chinese
}
edge {
  source: 3
  target: 25
  dep: "punct"
  isExtra: false
  sourceCopy: 0
  targetCopy: 0
  language: Chinese
}
edge {
  source: 3
  target: 26
  dep: "conj"
  isExtra: false
  sourceCopy: 0
  targetCopy: 0
  language: Chinese
}
edge {
  source: 3
  target: 31
  dep: "punct"
  isExtra: false
  sourceCopy: 0
  targetCopy: 0
  language: Chinese
}
edge {
  source: 3
  target: 32
  dep: "conj"
  isExtra: false
  sourceCopy: 0
  targetCopy: 0
  language: Chinese
}
edge {
  source: 3
  target: 36
  dep: "punct"
  isExtra: false
  sourceCopy: 0
  targetCopy: 0
  language: Chinese
}
edge {
  source: 3
  target: 39
  dep: "conj"
  isExtra: false
  sourceCopy: 0
  targetCopy: 0
  language: Chinese
}
edge {
  source: 3
  target: 42
  dep: "punct"
  isExtra: false
  sourceCopy: 0
  targetCopy: 0
  language: Chinese
}
edge {
  source: 7
  target: 4
  dep: "name"
  isExtra: false
  sourceCopy: 0
  targetCopy: 0
  language: Chinese
}
edge {
  source: 7
  target: 5
  dep: "name"
  isExtra: false
  sourceCopy: 0
  targetCopy: 0
  language: Chinese
}
edge {
  source: 7
  target: 6
  dep: "name"
  isExtra: false
  sourceCopy: 0
  targetCopy: 0
  language: Chinese
}
edge {
  source: 24
  target: 9
  dep: "cop"
  isExtra: false
  sourceCopy: 0
  targetCopy: 0
  language: Chinese
}
edge {
  source: 24
  target: 15
  dep: "acl"
  isExtra: false
  sourceCopy: 0
  targetCopy: 0
  language: Chinese
}
edge {
  source: 24
  target: 23
  dep: "compound:nn"
  isExtra: false
  sourceCopy: 0
  targetCopy: 0
  language: Chinese
}
edge {
  source: 14
  target: 10
  dep: "case"
  isExtra: false
  sourceCopy: 0
  targetCopy: 0
  language: Chinese
}
edge {
  source: 14
  target: 11
  dep: "amod"
  isExtra: false
  sourceCopy: 0
  targetCopy: 0
  language: Chinese
}
edge {
  source: 14
  target: 12
  dep: "nmod:assmod"
  isExtra: false
  sourceCopy: 0
  targetCopy: 0
  language: Chinese
}
edge {
  source: 14
  target: 13
  dep: "compound:nn"
  isExtra: false
  sourceCopy: 0
  targetCopy: 0
  language: Chinese
}
edge {
  source: 15
  target: 14
  dep: "nmod:prep"
  isExtra: false
  sourceCopy: 0
  targetCopy: 0
  language: Chinese
}
edge {
  source: 15
  target: 16
  dep: "punct"
  isExtra: false
  sourceCopy: 0
  targetCopy: 0
  language: Chinese
}
edge {
  source: 15
  target: 21
  dep: "conj"
  isExtra: false
  sourceCopy: 0
  targetCopy: 0
  language: Chinese
}
edge {
  source: 15
  target: 22
  dep: "mark"
  isExtra: false
  sourceCopy: 0
  targetCopy: 0
  language: Chinese
}
edge {
  source: 20
  target: 17
  dep: "compound:nn"
  isExtra: false
  sourceCopy: 0
  targetCopy: 0
  language: Chinese
}
edge {
  source: 20
  target: 18
  dep: "compound:nn"
  isExtra: false
  sourceCopy: 0
  targetCopy: 0
  language: Chinese
}
edge {
  source: 20
  target: 19
  dep: "compound:nn"
  isExtra: false
  sourceCopy: 0
  targetCopy: 0
  language: Chinese
}
edge {
  source: 21
  target: 20
  dep: "nsubj"
  isExtra: false
  sourceCopy: 0
  targetCopy: 0
  language: Chinese
}
edge {
  source: 26
  target: 28
  dep: "dobj"
  isExtra: false
  sourceCopy: 0
  targetCopy: 0
  language: Chinese
}
edge {
  source: 26
  target: 29
  dep: "nmod:range"
  isExtra: false
  sourceCopy: 0
  targetCopy: 0
  language: Chinese
}
edge {
  source: 28
  target: 27
  dep: "nmod:assmod"
  isExtra: false
  sourceCopy: 0
  targetCopy: 0
  language: Chinese
}
edge {
  source: 29
  target: 30
  dep: "mark:clf"
  isExtra: false
  sourceCopy: 0
  targetCopy: 0
  language: Chinese
}
edge {
  source: 32
  target: 33
  dep: "dobj"
  isExtra: false
  sourceCopy: 0
  targetCopy: 0
  language: Chinese
}
edge {
  source: 32
  target: 34
  dep: "nmod:range"
  isExtra: false
  sourceCopy: 0
  targetCopy: 0
  language: Chinese
}
edge {
  source: 34
  target: 35
  dep: "mark:clf"
  isExtra: false
  sourceCopy: 0
  targetCopy: 0
  language: Chinese
}
edge {
  source: 38
  target: 37
  dep: "amod"
  isExtra: false
  sourceCopy: 0
  targetCopy: 0
  language: Chinese
}
edge {
  source: 39
  target: 38
  dep: "nsubj"
  isExtra: false
  sourceCopy: 0
  targetCopy: 0
  language: Chinese
}
edge {
  source: 39
  target: 40
  dep: "dep"
  isExtra: false
  sourceCopy: 0
  targetCopy: 0
  language: Any
}
edge {
  source: 40
  target: 41
  dep: "mark:clf"
  isExtra: false
  sourceCopy: 0
  targetCopy: 0
  language: Chinese
}
root: 3
rootNode: 2

Now,you can see the root:3,rootnode:2. Maybe the reason is i input a complex long Chinese sentence to cilent?
AngledLuffa commented 3 months ago

Actually the root indicates the index of the word which points to root, whereas rootNode indicates the position of that node in the node list (indexed from 0). Since the nodes aren't necessarily sorted by word position,, this index can help you more easily find the root in that list.

xy1137030414 commented 3 months ago

i got it!thank you!