2016-09-20 53 views
-2

我的(標記,標籤)元組列表,如下所示:計數出現

token_tags = 
[('book', 'noun'), 
('run', 'noun'), 
(',', ','), 
('book', 'verb'), 
('run', 'adj'), 
('run', 'verb')] 

我試圖找出一個令牌多少次第一標記爲「名詞」然後在列表中顯示爲「動詞」。所以,我不應該算'跑',因爲它被標記爲「名詞」和「動詞」分配之間的形容詞。有關如何做到這一點的任何建議?

我已經轉換解析成一個字典如下

d = {} 
for x, y in token_tags: 
d.setdefault(x, []).append(y) 

所以,現在d包含:

{'book': ['noun', 'verb'], 'run': ['noun', 'adj', 'verb'], ',': [',']} 

我試圖正規表示法來解決這個問題,但沒有奏效。

+0

問題描述很有意義。那麼你的問題是什麼? –

+2

SO不是代碼編寫服務,你能顯示你所嘗試過的嗎?需要考慮的一件事是將這個元組列表轉換爲另一種數據結構,以便更容易檢查標記賦值的順序(例如:'{token:[tags]}') – AChampion

+0

不要發佈與另一個問題相同的問題這是你剛剛發佈的這一個相同 - http://stackoverflow.com/questions/39582639/counting-items-inside-tuples-in-python –

回答

0
現在你擁有了它在字典中,計數一定對多少時間出現簡單的想法是採取連續兩個元素在列表中,檢查它們是否渴望對,例如

>>> data = {'book': ['noun', 'verb'], 'run': ['noun', 'adj', 'verb'], ',': [',']} 
>>> result={} 
>>> for token, tag_list in data.items(): 
     count = 0 
     for i in range(1,len(tag_list)): 
      if tag_list[i-1]=="noun" and tag_list[i]=="verb": 
       count = count + 1 
     result[token] = count 

>>> result 
{',': 0, 'book': 1, 'run': 0} 
>>> 
+0

爲什麼投了票? – Copperfield