漱石書簡から人物登場頻度と地名登場頻度

curl -O 'https://www.dhii.jp/dh/tei/soseki_letter_19000908.xml'
curl -O 'https://www.dhii.jp/dh/tei/soseki_letter_19001008.xml'
curl -O 'https://www.dhii.jp/dh/tei/soseki_letter_19001022.xml'
import pathlib

from lxml import etree

ns = {"tei": "http://www.tei-c.org/ns/1.0"}

for p in pathlib.Path(".").glob("soseki_letter_*.xml"):

    tree = etree.parse(p)
    root = tree.getroot()

    persons = root.xpath("//tei:back/tei:listPerson/tei:person/@xml:id", namespaces=ns)
    places = root.xpath("//tei:back/tei:listPlace/tei:place/@xml:id", namespaces=ns)

    # 人名

    for person in persons:

        data = root.xpath(f"//tei:body//tei:*[@corresp='#{person}']", namespaces=ns)

        print(f"{person}: 言及{len(data)}回")

        for d in data:

            s = " ".join([i.strip() for i in d.xpath("./..//text()") if i.strip()])

            print(" -", s)

    print("-" * 20)

    # 地名

    for place in places:

        data = root.xpath(f"//tei:body//tei:*[@corresp='#{place}']", namespaces=ns)

        print(f"{place}: 言及{len(data)}回")

    print("=" * 20)