markdownをplain textにしたうえで、その文章をginzaでリスト化しました。
必要なライブラリをインストールします。
pip install Markdown beautifulsoup4 ginza ja-ginza
以下のような実装を行いました。
from bs4 import BeautifulSoup
from markdown import markdown
import re
import spacy
def markdown_to_text(markdown_string):
"""マークダウンを平文に変換します"""
# md -> html -> text since BeautifulSoup can extract text cleanly
html = markdown(markdown_string)
# remove code snippets
html = re.sub(r'<pre>(.*?)</pre>', ' ', html)
html = re.sub(r'<code>(.*?)</code >', ' ', html)
# extract text
soup = BeautifulSoup(html, "html.parser")
text = ''.join(soup.find_all(string=True)).replace("\n", " ")
return text
def split_sentences(text):
nlp = spacy.load('ja_ginza')
doc = nlp(text)
sentences = [sent.text for sent in doc.sents]
return sentences
if __name__ == "__main__":
markdown_string = """# タイトル
## サブタイトル
これは段落です。
これは別の段落です。
"""
text = markdown_to_text(markdown_string)
print(text)
sentences = split_sentences(text)
print(sentences)
出力は以下のとおりです。
タイトル サブタイトル これは段落です。 これは別の段落です。
['タイトル サブタイトル', 'これは段落です。', 'これは別の段落です。']
タイトルのあたりがちょっと不満なので、改良の余地ありかもです。
(改良ポイントなどコメントあればぜひ!)
感想
ginzaすごい。。
参考
以下のコードを参考にしました。