大家好!我对文本分析有点陌生,自己尝试一些简单的东西。我有一个df如下:
data = ['bank a earned 3 million usd through investing in certain funds and earned 500k eur from other investments in 2020', 'bank b earned 2 million usd from borrowing and 500k gbp from investments in 2020', 'bank c earned 600k chf and 300k aud from investing and borrowing respectively in 2020‘]
df = pd.DataFrame(data, columns=['text'])
'
我的目标是试着找出不同的银行是如何通过文本分析赚钱的。我已经做了一些预处理,例如删除标点符号并将数据全部转换为小写。我意识到我还应该把单词词干,以提高准确性,并删除停止词。然而,我脑海中出现了一个关于标记化的问题。如果我试图将它们标记化,那么像"200万美元"或"30万澳元"这样的重要短语的文本不会失去意义吗?如果是这样,我如何将其标记为保留文本数据含义的短语?
谢谢
从技术上讲,您可以这样做。这是一个双元数据的例子,如果你用3代替2,你就可以得到三元数据。您也可以使用其他库。
import nltk
nltk.download('punkt')
from nltk import word_tokenize
from nltk.util import ngrams
df['tokenized_words']=df['text'].apply(word_tokenize)
df['tokenized_bigrams']=df['tokenized_words'].apply(lambda x: list(ngrams(x, 2)))
为了提供更多的上下文,它被称为n-gram标记化,您可以使用双元(n=2),三元(n=3)等等。然后,在n个图上进行分割之后,你可以找到统计上常用的一个,并将它们视为一些特征,如果你只想保留经常出现的特征。这取决于你的选择,取决于你想要解决的问题,以及你想要如何解决它,有很多可能性。对于如何决定标记化,没有严格的答案。进行标记化的原因是,您希望将文本流分解成更小的部分,以便更容易地进一步利用,例如,如果您应用某些机器学习算法。此外,您可以使用单个标记来分析地找到那些倾向于与常见双元关联在一起的单词,而无需在开始时分割。