次のような文が与えられた場合:
Complimentary gym access for two for the length of stay ($12 value per person per day)
ジムやジムへのアクセスという言葉を識別するために、どのような一般的なアプローチをとることができますか?
次のような文が与えられた場合:
Complimentary gym access for two for the length of stay ($12 value per person per day)
ジムやジムへのアクセスという言葉を識別するために、どのような一般的なアプローチをとることができますか?
回答:
浅いN atural Lの anguageのP rocessing技術は、文章から概念を抽出するために使用することができます。
-------------------------------------------
浅いNLPテクニックの手順:
1)文を小文字に変換します
2)ストップワードを削除します(これらは言語でよく見られる単語です。for、very、and、of、areなどの単語は一般的なストップワードです)
3)n-gram、つまりテキストの特定のシーケンスからn個のアイテムの連続したシーケンスを抽出します(nを増やすだけで、モデルを使用してより多くのコンテキストを格納できます)
4)構文ラベル(名詞、動詞など)を割り当てます
5)セマンティック/構文解析アプローチによるテキストからの知識抽出、すなわち名詞/動詞のような文でより高い重みを保持する単語を保持しようとする
-------------------------------------------
上記の手順を特定の文に適用した結果を調べてみましょうComplimentary gym access for two for the length of stay ($12 value per person per day)
。
1グラムの結果:ジム、アクセス、長さ、滞在、価値、人、日
Summary of step 1 through 4 of shallow NLP:
1-gram PoS_Tag Stopword (Yes/No)? PoS Tag Description
-------------------------------------------------------------------
Complimentary NNP Proper noun, singular
gym NN Noun, singular or mass
access NN Noun, singular or mass
for IN Yes Preposition or subordinating conjunction
two CD Cardinal number
for IN Yes Preposition or subordinating conjunction
the DT Yes Determiner
length NN Noun, singular or mass
of IN Yes Preposition or subordinating conjunction
stay NN Noun, singular or mass
($12 CD Cardinal number
value NN Noun, singular or mass
per IN Preposition or subordinating conjunction
person NN Noun, singular or mass
per IN Preposition or subordinating conjunction
day) NN Noun, singular or mass
Step 4: Retaining only the Noun/Verbs we end up with gym, access, length, stay, value, person, day
nを増やしてより多くのコンテキストを保存し、ストップワードを削除しましょう。
2グラムの結果:無料のジム、ジムへのアクセス、長期滞在、滞在価値
Summary of step 1 through 4 of shallow NLP:
2-gram Pos Tag
---------------------------
access two NN CD
complimentary gym NNP NN
gym access NN NN
length stay NN NN
per day IN NN
per person IN NN
person per NN IN
stay value NN NN
two length CD NN
value per NN IN
Step 5: Retaining only the Noun/Verb combination we end up with complimentary gym, gym access, length stay, stay value
3グラムの結果:ジムへの無料アクセス、長期滞在価値、1日1人
Summary of step 1 through 4 of shallow NLP:
3-gram Pos Tag
-------------------------------------
access two length NN CD NN
complimentary gym access NNP NN NN
gym access two NN NN CD
length stay value NN NN NN
per person per IN NN IN
person per day NN IN NN
stay value per NN NN IN
two length stay CD NN NN
value per person NN IN NN
Step 5: Retaining only the Noun/Verb combination we end up with complimentary gym access, length stay value, person per day
覚えておくべきこと:
ツール:
品詞タグ付けにOpenNLP / StanfordNLPの使用を検討できます。ほとんどのプログラミング言語には、OpenNLP / StanfordNLPのサポートライブラリがあります。快適さに基づいて言語を選択できます。以下は、PoSタグ付けに使用したサンプルRコードです。
サンプルRコード:
Sys.setenv(JAVA_HOME='C:\\Program Files\\Java\\jre7') # for 32-bit version
library(rJava)
require("openNLP")
require("NLP")
s <- paste("Complimentary gym access for two for the length of stay $12 value per person per day")
tagPOS <- function(x, ...) {
s <- as.String(x)
word_token_annotator <- Maxent_Word_Token_Annotator()
a2 <- Annotation(1L, "sentence", 1L, nchar(s))
a2 <- annotate(s, word_token_annotator, a2)
a3 <- annotate(s, Maxent_POS_Tag_Annotator(), a2)
a3w <- a3[a3$type == "word"]
POStags <- unlist(lapply(a3w$features, `[[`, "POS"))
POStagged <- paste(sprintf("%s/%s", s[a3w], POStags), collapse = " ")
list(POStagged = POStagged, POStags = POStags)
}
tagged_str <- tagPOS(s)
tagged_str
#$POStagged
#[1] "Complimentary/NNP gym/NN access/NN for/IN two/CD for/IN the/DT length/NN of/IN stay/NN $/$ 12/CD value/NN per/IN person/NN per/IN day/NN"
#
#$POStags
#[1] "NNP" "NN" "NN" "IN" "CD" "IN" "DT" "NN" "IN" "NN" "$" "CD"
#[13] "NN" "IN" "NN" "IN" "NN"
シャロー&ディープNLPに関する追加資料:
文の構造を分析し、対応する構文カテゴリを抽出する必要があります(この場合、名詞句、つまり句のカテゴリになると思います)。詳細については、対応するウィキペディアの記事とNLTK本の「文章構造の分析」の章を参照してください。
上記のアプローチを実装するために利用可能なソフトウェアツールに関しては、NLTK(Pythonを好む場合)またはStanfordNLPソフトウェア(Javaを好む場合)を検討することをお勧めします。他の多くのNLPフレームワーク、ライブラリ、およびプログラミング言語のサポートについては、この優れたキュレーションリストの対応する(NLP)セクションを参照してください。