使用 lxml 通过 unicode 编码检索标签和子标签类别
Using lxml to retrieve both tag and subtag categories with unicode encoding
我正在尝试使用 Collections.counter 和 lxml 来计算 xml 文件中的所有名词和形容词,其中名词和形容词标签的写法如下:
<word id="2" start="7400" end="7411" tag="NN">Ministerien</word>
其中tag="NN"表示一个名词。我只想拉出这些,并将它们添加到计数器中,但我很难这样做。我目前可以提取所有单词并对其进行计数,但无法在 lxml 中找到仅采用某些子标签的方法。
这是当前的相关代码。
context = etree.iterparse(xmlFile)
counter = collections.Counter()
for action, elem in context:
if elem.tag == "word":
counter[elem.text] += 1
print counter.most_common(10)
elem.attrib
returns key:value 对的字典,其中键是那个 xml 元素的 properties/attributes 和值是那个的值特定属性。
您可以使用它来检查属性 tag
's 是名词还是形容词。
例子-
context = etree.iterparse(xmlFile)
counter = collections.Counter()
for action, elem in context:
if elem.tag == "word" and (elem.attrib.get('tag') in ['NN','AD']): #AD I just used for adjective, use whatever is correct.
counter[elem.text] += 1
print counter.most_common(10)
Example/Demo -
我有一个 xml 文件,如 -
<root>
<word id="2" start="7400" end="7411" tag="NN">Ministerien1</word>
<word id="2" start="7400" end="7411" tag="AD">Ministerien5</word>
<word id="2" start="7400" end="7411" tag="NN">Ministerien2</word>
<word id="2" start="7400" end="7411" tag="NN">Ministerien1</word>
<word id="2" start="7400" end="7411" tag="AD">Ministerien4</word>
<word id="2" start="7400" end="7411" tag="AD">Ministerien4</word>
<word id="2" start="7400" end="7411" tag="HF">Ministerien6</word>
<word id="2" start="7400" end="7411" tag="AD">Ministerien4</word>
<word id="2" start="7400" end="7411" tag="NN">Ministerien2</word>
<word id="2" start="7400" end="7411" tag="NN">Ministerien3</word>
</root>
代码-
In [18]: context = etree.iterparse('a.xml')
In [19]: counter = Counter()
In [20]: for action, elem in context:
....: if elem.tag == "word" and (elem.attrib.get('tag') in ['NN','AD']):
....: counter[elem.text] += 1
In [21]: counter
Out[21]: Counter({'Ministerien4': 3, 'Ministerien2': 2, 'Ministerien1': 2, 'Ministerien3': 1, 'Ministerien5': 1})
我正在尝试使用 Collections.counter 和 lxml 来计算 xml 文件中的所有名词和形容词,其中名词和形容词标签的写法如下:
<word id="2" start="7400" end="7411" tag="NN">Ministerien</word>
其中tag="NN"表示一个名词。我只想拉出这些,并将它们添加到计数器中,但我很难这样做。我目前可以提取所有单词并对其进行计数,但无法在 lxml 中找到仅采用某些子标签的方法。
这是当前的相关代码。
context = etree.iterparse(xmlFile)
counter = collections.Counter()
for action, elem in context:
if elem.tag == "word":
counter[elem.text] += 1
print counter.most_common(10)
elem.attrib
returns key:value 对的字典,其中键是那个 xml 元素的 properties/attributes 和值是那个的值特定属性。
您可以使用它来检查属性 tag
's 是名词还是形容词。
例子-
context = etree.iterparse(xmlFile)
counter = collections.Counter()
for action, elem in context:
if elem.tag == "word" and (elem.attrib.get('tag') in ['NN','AD']): #AD I just used for adjective, use whatever is correct.
counter[elem.text] += 1
print counter.most_common(10)
Example/Demo -
我有一个 xml 文件,如 -
<root>
<word id="2" start="7400" end="7411" tag="NN">Ministerien1</word>
<word id="2" start="7400" end="7411" tag="AD">Ministerien5</word>
<word id="2" start="7400" end="7411" tag="NN">Ministerien2</word>
<word id="2" start="7400" end="7411" tag="NN">Ministerien1</word>
<word id="2" start="7400" end="7411" tag="AD">Ministerien4</word>
<word id="2" start="7400" end="7411" tag="AD">Ministerien4</word>
<word id="2" start="7400" end="7411" tag="HF">Ministerien6</word>
<word id="2" start="7400" end="7411" tag="AD">Ministerien4</word>
<word id="2" start="7400" end="7411" tag="NN">Ministerien2</word>
<word id="2" start="7400" end="7411" tag="NN">Ministerien3</word>
</root>
代码-
In [18]: context = etree.iterparse('a.xml')
In [19]: counter = Counter()
In [20]: for action, elem in context:
....: if elem.tag == "word" and (elem.attrib.get('tag') in ['NN','AD']):
....: counter[elem.text] += 1
In [21]: counter
Out[21]: Counter({'Ministerien4': 3, 'Ministerien2': 2, 'Ministerien1': 2, 'Ministerien3': 1, 'Ministerien5': 1})