在匯入資料集、庫和所有這些之后,我的代碼基本上看起來像這樣:
data = pd.read_csv("/content/gdrive/MyDrive/Data/tripadvisor_hotel_reviews.csv")
reviews = data['Review'].str.lower()
#Check
print(reviews)
print(type('Review'))
print(type(reviews))
但是,輸出如下所示:
0 nice hotel expensive parking got good deal sta...
1 ok nothing special charge diamond member hilto...
2 nice rooms not 4* experience hotel monaco seat...
3 unique, great stay, wonderful time hotel monac...
4 great stay great stay, went seahawk game aweso...
...
20486 best kept secret 3rd time staying charm, not 5...
20487 great location price view hotel great quick pl...
20488 ok just looks nice modern outside, desk staff ...
20489 hotel theft ruined vacation hotel opened sept ...
20490 people talking, ca n't believe excellent ratin...
Name: Review, Length: 20491, dtype: object
<class 'str'>
<class 'pandas.core.series.Series'>
如果我(假設)將它們設定為相等,我想知道為什么變數“reviews”與資料列“Review”的型別不同。
這是一個問題,因為當我嘗試標記我的資料時,它會顯示錯誤。
我的標記化代碼:
word_tokenize(reviews)
我得到的錯誤:
**TypeError** Traceback (most recent call last)
<ipython-input-9-ebaf7dca0fec> in <module>()
----> 1 word_tokenize(reviews)
8 frames
/usr/local/lib/python3.7/dist-packages/nltk/tokenize/punkt.py in _slices_from_text(self, text)
1287 def _slices_from_text(self, text):
1288 last_break = 0 ->
1289 for match in self._lang_vars.period_context_re().finditer(text):
1290 context = match.group() match.group('after_tok')
1291 if self.text_contains_sentbreak(context):
**TypeError:** expected string or bytes-like object
uj5u.com熱心網友回復:
這里發生了很多事情。首先,reviews是一個pd.Series。這意味著
word_tokenize(reviews)
行不通,因為你不能標記一個series字串。但是,您可以對字串進行標記。以下應該作業
tokens = [word_tokenize(review) for review in reviews]
因為review上面是一個字串,并且您正在標記整個pd.Series名為reviews.
另外,比較 type('Review')和type(reviews)沒有意義。reviews是pd.Series具有許多不同字串的(即可迭代的),"Review"而是包含英語單詞的字串實體"Review"。type('Review')將永遠是字串。相反,type(reviews)可能會根據變數reviews所持有的值而改變。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/489749.html
