2017-09-05 1 views
4

意味のある単語にテキストの行を変換しますword_tokenizeですが、変換できませんでした。どのように私は、文字列のラインを持っている

コンテキスト:PDFファイルをテキストファイルに解析していますpdfコンバータから戻ってきて、pdfをテキストに変換しています。私はPDFminerを使っています。Python

+0

あなたが試すことができ、別のPDFコンバータはありますか?それは、すべての言葉を一緒に詰め込むべきではありません。 – sniperd

+3

あなたはおそらくあいまいさの問題に遭遇するでしょう。例えば、その文字列の最初の単語は "specific"( "at"と "ion"、一意で有効な単語の両方)または "specification"です。 – Zinki

+0

辞書にあるすべての単語を検索することで、強引に挑戦しましたか?あなたはすべての単語と英語の辞書でライブラリを見つけることができます。 – semicolon

答えて

2

再帰を使用してこの問題を解決できます。まず、あなたがここに来ることができ、辞書のtxtファイルをダウンロードしたいと思うでしょう:https://github.com/Ajax12345/My-Python-Projects/blob/master/the_file.txt

dictionary = [i.strip('\n') for i in open('the_file.txt')] 
def get_options(scrambled, flag, totals, last): 
    if flag: 
     return totals 

    else: 
     new_list = [i for i in dictionary if scrambled.startswith(i)] 
     if new_list: 

      possible_word = new_list[-1] 
      new_totals = totals 
      new_totals.append(possible_word) 
      new_scrambled = scrambled[len(possible_word):] 
      return get_options(new_scrambled, False, new_totals, possible_word) 

     else: 
      return get_options("", True, totals, '') 


s = "specificationsinaccordancewithqualityaccreditedstandards" 
print(' '.join(get_options(s, False, [], ''))) 

出力:

'specifications in accordance with quality accredited standards' 
+0

これは私が探していたものです、ありがとう、また辞書は動的でもあり、既に見つかった単語を含んでいます –

3

trieを使うことができます。 trieは、単語の検証を可能にするデータ構造です。
これはツリーで、有効なプレフィックスのためにブランチをナビゲートし、完全な世界にヒットしたときに通知を受け取ります。

私はこれを "具体的に"使用したことはありませんが、私はこのpythonの実装であるdatrieを見つけました。

datrieをインポートしてtxt辞書(例:here)からtrieを生成し、その文字列を解析することを考えました。 trieで一致が見つかったときに文字ごとに文字を読み、合っていない単語を見つけたら分割語の文字列に追加します。

triehere on wikipediaまたはin this video(これはtrieが何であるかを教えてくれた人です)で詳細を見つけることができます。

関連する問題