🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Beautiful Soup

Beautiful Soupは、Pythonのライブラリの一つ。スクレイピングに特化しています。HTMLデータの構文の解析を行うために、HTMLタグ/CSSのセレクタで抽出する部分を指定することが可能です。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

自然言語処理

自然言語処理は、日常的に使用される自然言語をコンピューターに処理させる技術やソフトウェアの総称です。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

1763閲覧

PythonでSGMファイルを利用したい

goldthisplay

総合スコア14

Beautiful Soup

Beautiful Soupは、Pythonのライブラリの一つ。スクレイピングに特化しています。HTMLデータの構文の解析を行うために、HTMLタグ/CSSのセレクタで抽出する部分を指定することが可能です。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

自然言語処理

自然言語処理は、日常的に使用される自然言語をコンピューターに処理させる技術やソフトウェアの総称です。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2019/10/27 07:38

前提・実現したいこと

Pythonで文書分類をやろうとしているのですが、ダウンロードしてきたreuters21578のデータをPython上で扱えるようにするのに苦戦しています。BeautifulSoupでやってみてますが、他に良い方法があれば教えていただきたいです。

発生している問題・エラーメッセージ

BeautifulSoupのメソッドでトピックが存在する記事のtopicsタグをリストにしようとすると、以下のようにトピックが存在しないものまでリストに追加されてしまいます。
イメージ説明

該当のソースコード

Python

1from bs4 import BeautifulSoup 2 3with open ("/content/drive/My Drive/antiword/lewis.dtd") as f: 4 dtd = f.read() 5with open ("/content/drive/My Drive/antiword/reut2-000.sgm") as f: 6 soup = BeautifulSoup(dtd + f.read(), "lxml") 7 8topics = [] 9for article in soup.find_all(topics="YES"): 10 topics.append(article.find("topics")) 11print(topics)

SGML

1<!DOCTYPE lewis SYSTEM "lewis.dtd"> 2<REUTERS TOPICS="YES" LEWISSPLIT="TRAIN" CGISPLIT="TRAINING-SET" OLDID="5544" NEWID="1"> 3<DATE>26-FEB-1987 15:01:01.79</DATE> 4<TOPICS><D>cocoa</D></TOPICS> 5<PLACES><D>el-salvador</D><D>usa</D><D>uruguay</D></PLACES> 6<PEOPLE></PEOPLE> 7<ORGS></ORGS> 8<EXCHANGES></EXCHANGES> 9<COMPANIES></COMPANIES> 10<UNKNOWN> 11&#5;&#5;&#5;C T 12&#22;&#22;&#1;f0704&#31;reute 13u f BC-BAHIA-COCOA-REVIEW 02-26 0105</UNKNOWN> 14<TEXT>&#2; 15<TITLE>BAHIA COCOA REVIEW</TITLE> 16<DATELINE> SALVADOR, Feb 26 - </DATELINE><BODY>Showers continued throughout the week in 17the Bahia cocoa zone, alleviating the drought since early 18January and improving prospects for the coming temporao, 19although normal humidity levels have not been restored, 20Comissaria Smith said in its weekly review. 21 The dry period means the temporao will be late this year. 22 Arrivals for the week ended February 22 were 155,221 bags 23of 60 kilos making a cumulative total for the season of 5.93 24mln against 5.81 at the same stage last year. Again it seems 25that cocoa delivered earlier on consignment was included in the 26arrivals figures. 27 Comissaria Smith said there is still some doubt as to how 28much old crop cocoa is still available as harvesting has 29practically come to an end. With total Bahia crop estimates 30around 6.4 mln bags and sales standing at almost 6.2 mln there 31are a few hundred thousand bags still in the hands of farmers, 32middlemen, exporters and processors. 33 There are doubts as to how much of this cocoa would be fit 34for export as shippers are now experiencing dificulties in 35obtaining +Bahia superior+ certificates. 36 In view of the lower quality over recent weeks farmers have 37sold a good part of their cocoa held on consignment. 38 Comissaria Smith said spot bean prices rose to 340 to 350 39cruzados per arroba of 15 kilos. 40 Bean shippers were reluctant to offer nearby shipment and 41only limited sales were booked for March shipment at 1,750 to 421,780 dlrs per tonne to ports to be named. 43 New crop sales were also light and all to open ports with 44June/July going at 1,850 and 1,880 dlrs and at 35 and 45 dlrs 45under New York july, Aug/Sept at 1,870, 1,875 and 1,880 dlrs 46per tonne FOB. 47 Routine sales of butter were made. March/April sold at 484,340, 4,345 and 4,350 dlrs. 49 April/May butter went at 2.27 times New York May, June/July 50at 4,400 and 4,415 dlrs, Aug/Sept at 4,351 to 4,450 dlrs and at 512.27 and 2.28 times New York Sept and Oct/Dec at 4,480 dlrs and 522.27 times New York Dec, Comissaria Smith said. 53 Destinations were the U.S., Covertible currency areas, 54Uruguay and open ports. 55 Cake sales were registered at 785 to 995 dlrs for 56March/April, 785 dlrs for May, 753 dlrs for Aug and 0.39 times 57New York Dec for Oct/Dec. 58 Buyers were the U.S., Argentina, Uruguay and convertible 59currency areas. 60 Liquor sales were limited with March/April selling at 2,325 61and 2,380 dlrs, June/July at 2,375 dlrs and at 1.25 times New 62York July, Aug/Sept at 2,400 dlrs and at 1.25 times New York 63Sept and Oct/Dec at 1.25 times New York Dec, Comissaria Smith 64said. 65 Total Bahia sales are currently estimated at 6.13 mln bags 66against the 1986/87 crop and 1.06 mln bags against the 1987/88 67crop. 68 Final figures for the period to February 28 are expected to 69be published by the Brazilian Cocoa Trade Commission after 70carnival which ends midday on February 27. 71 Reuter 72&#3;</BODY></TEXT> 73</REUTERS>

SGMLの方は最初の一件だけ示してます。

試したこと

パーサーをhtml.parserやlxml-xmlとかにしましたが上手くいきませんでした。

補足情報(FW/ツールのバージョンなど)

Google Colabolatory
Python3.6.8
BeautifulSoup4

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

ダウンロードしたデータのREADMEを見ていると、topics="YES"となっていてもtopicsタグが空の記事が混じっているようで、確認してみると実際にそういう記事がありました。なのでSGMLの解析自体はこのコードで問題ないみたいです。

投稿2019/10/28 18:17

goldthisplay

総合スコア14

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問