具有两个单词标记的文本分类

时间:2019-03-11 20:51:57

标签: python nltk

我正在尝试使用NLTK和广告中的单词标记化来提取一些关键信息。

例如:“该房间可容纳800人,禁止吸烟,不允许12岁以上的儿童...”

我的问题是:  -(最大容量)的含义不同于容量。  -吸烟与吸烟无异。

如何标记合成词以进行分析?我不想破坏[“不”,“吸烟”]我想要一个令牌[“不吸烟”]

word_tokenize(text)

此外,当我标记和删除停用词时,我会失去这些词的否定含义。

1 个答案:

答案 0 :(得分:0)

我认为您正在寻找的是NLTK的ngrams

from nltk import ngrams

text = "The room has max capacity of 800 people no smoking allowed no children above 12 yr old ..."

pairs = ngrams(text.split(), 2) # change the 2 here to however many words you want in each group

for pair in pairs:
    print(pair)

> ('The', 'room')
('room', 'has')
('has', 'max')
('max', 'capacity')
('capacity', 'of')
('of', '800')
('800', 'people')
('people', 'no')
('no', 'smoking')
('smoking', 'allowed')
('allowed', 'no')
('no', 'children')
('children', 'above')
('above', '12')
('12', 'yr')
('yr', 'old')
('old', '...')

希望这会有所帮助

编辑:

如果您接下来要使用TF-IDF,我建议您使用sklearn.feature_extraction.text.TfidfVectorizer作为参数ngram_range的{​​{1}}可以为您提供所需要的配对,这意味着您不需要事先使用上面的代码。