久久伊人一区二区三区四区-久久伊人影视-久久伊人影院-久久伊人中文字幕-亚洲成在人色婷婷-亚洲大成色www永久网

千鋒教育-做有情懷、有良心、有品質的職業教育機構

手機站
千鋒教育

千鋒學習站 | 隨時隨地免費學

千鋒教育

掃一掃進入千鋒手機站

領取全套視頻
千鋒教育

關注千鋒學習站小程序
隨時隨地免費學習課程

當前位置:首頁  >  技術干貨  > 探索 Python、機器學習和 NLTK 庫

探索 Python、機器學習和 NLTK 庫

來源:千鋒教育
發布人:xqq
時間: 2023-11-06 03:39:51 1699213191

挑戰:使用機器學習對RSS提要進行分類

最近,我接到一項任務,要求為客戶創建一個RSS提要分類子系統。目標是讀取幾十個甚至幾百個RSS提要,將它們的許多文章自動分類到幾十個預定義的主題領域當中。客戶網站的內容、導航和搜索功能都將由這個每日自動提要檢索和分類結果驅動。

客戶建議使用機器學習,或許還會使用ApacheMahout和Hadoop來實現該任務,因為客戶最近閱讀了有關這些技術的文章。但是,客戶的開發團隊和我們的開發團隊都更熟悉Ruby,而不是Java?技術。本文將介紹解決方案的技術之旅、學習過程和最終實現。

什么是機器學習?

我的第一個問題是,“究竟什么是機器學習?”我聽說過這個術語,并且隱約知道超級計算機IBM?Watson最近使用該技術在一場Jeopardy比賽中擊敗了人類競爭者。作為購物者和社交網絡活動參與者,我也知道Amazon.com和Facebook根據其購物者數據在提供建議(如產品和人)方面表現良好。總之,機器學習取決于IT、數學和自然語言的交集。它主要關注以下三個主題,但客戶的解決方案最終僅涉及前兩個主題:

分類。根據類似項目的一組訓練數據,將相關的項分配到任意預定義的類別

建議。根據類似項目的觀察來建議采用的項

集群。在一組數據內確定子組

Mahout和Ruby的選擇

理解了機器學習是什么之后,下一步是確定如何實現它。根據客戶的建議,Mahout是一個合適的起點。我從Apache下載了代碼,并開始了學習使用Mahout及其兄弟Hadoop實現機器學習的過程。不幸的是,我發現即使對于有經驗的Java開發人員而言,Mahout的學習曲線也很陡峭,并且不存在可用的樣例代碼。同樣不幸的是,機器學習缺乏基于Ruby的框架或gem。

發現Python和NLTK

我繼續搜索解決方案,并且在結果集中一直遇到"Python"。作為一名Ruby開發人員,雖然我還沒有學過該語言,但我也知道Python是一個面向相似對象的、基于文本的、可理解和動態的編程語言。盡管兩種語言之間存在一些相似之處,但我多年來都忽視了學習Python,將它視為一項多余的技能集。Python是我的“盲點”,我懷疑許多Ruby開發人員同行都是這樣認為的。

搜索機器學習的書籍,并更深入研究它們的目錄,我發現,有相當高比例的此類系統在使用Python作為其實現語言,并使用了一個被稱為NaturalLanguageToolkit(NLTK,自然語言工具包)的庫。通過進一步的搜索,我發現Python的應用比我意識到的還要廣泛,如GoogleAppEngine、YouTube和使用Django框架構建的網站。它甚至還預安裝在我每天都使用的MacOSX工作站上!此外,Python為數學、科學和工程提供了有趣的標準庫(例如,NumPy和SciPy)。

我決定推行一個Python解決方案,因為我找到了非常好的編碼示例。例如,下面這一行代碼就是通過HTTP讀取RSS提要并打印其內容所需的所有代碼:

printfeedparser.parse("http://feeds.nytimes.com/nyt/rss/Technology")

快速掌握Python

執行Python程序同樣很簡單。獲得一個名稱為locomotive_main.py的程序和三個參數,然后您就可以使用Python程序編譯并執行它:

$pythonlocomotive_main.pyarg1arg2arg3

Python使用清單1中的if__name__=="__main__":語法來確定文件本身是從命令行執行的還是從其他代碼導入的。為了讓文件變得可以執行,需要添加"__main__"檢測。

清單1.Main檢測

importsys

importtime

importlocomotive

if__name__=="__main__":

start_time=time.time()

iflen(sys.argv)>1:

app=locomotive.app.Application()

...additionallogic...

virtualenv

大多數Ruby開發人員熟悉系統范圍的庫或gem的問題。使用一組系統范圍內的庫的做法一般是不可取的,因為您的其中一個項目可能依賴于某個給定的庫的版本1.0.0,而另一個項目則依賴于版本1.2.7。同樣,Java開發人員都知道系統范圍的CLASSPATH存在同樣的問題。就像Ruby社區使用其rvm工具,而Python社區使用virtualenv工具(請參閱參考資料,以獲得相關鏈接)來創建獨立的執行環境,其中包含特定版本的Python和一組庫。清單2中的命令顯示了如何為您p1項目創建一個名為p1_env的虛擬環境,其中包含feedparser、numpy、scipy和nltk庫。

清單2.使用virualenv創建一個虛擬環境的命令

$sudopipinstallvirtualenv

$cd~

$mkdirp1

$cdp1

$virtualenvp1_env--distribute

$sourcep1_env/bin/activate

(p1_env)[~/p1]$pipinstallfeedparser

(p1_env)[~/p1]$pipinstallnumpy

(p1_env)[~/p1]$pipinstallscipy

(p1_env)[~/p1]$pipinstallnltk

(p1_env)[~/p1]$pipfreeze

每次在一個shell窗口使用您的項目時,都需要“獲得”您的虛擬環境激活腳本。請注意,在激活腳本被獲得后,shell提示符會改變。當在您的系統上創建和使用shell窗口,輕松地導航到您的項目目錄,并啟動其虛擬環境時,您可能想在您的~/.bash_profile文件中添加以下條目:

$aliasp1="cd~/p1;sourcep1_env/bin/activate"

代碼庫結構

在完成簡單的單文件“HelloWorld”程序的編寫之后,Python開發人員需要理解如何正確地組織其代碼庫的目錄和文件名。Java和Ruby語言在這方面都有各自的要求,Python也沒有什么不同。簡單來說,Python使用包的概念對相關的代碼進行分組,并提供了明確的名稱空間。出于演示目的,在本文中,代碼存在于某個給定項目的根目錄中,例如~/p1。在這個目錄中,存在一個用于相同名稱的Python包的locomotive目錄。清單3顯示了這個目錄結構。

清單3.示例目錄結構

locomotive_main.py

locomotive_tests.py

locomotive/

__init__.py

app.py

capture.py

category_associations.py

classify.py

news.py

recommend.py

rss.py

locomotive_tests/

__init__.py

app_test.py

category_associations_test.py

feed_item_test.pyc

rss_item_test.py

請注意名稱古怪的__init__.py文件。這些文件指示Python為您的包加載必要的庫和特定的應用程序代碼文件,它們都位于相同的目錄中。清單4顯示了文件locomotive/__init__.py的內容。

清單4.locomotive/__init__.py

#systemimports;loadsinstalledpackages

importcodecs

importlocale

importsys

#applicationimports;theseloadyourspecific*.pyfiles

importapp

importcapture

importcategory_associations

importclassify

importrss

importnews

importrecommend

有了結構如清單4所示的locomotive包之后,在項目的根目錄中的主程序就可以導入并使用它。例如,文件locomotive_main.py包含以下導入:

importsys#>--systemlibrary

importtime#>--systemlibrary

importlocomotive#>--customapplicationcodelibraryinthe"locomotive"directory

測試

Pythonunittest標準庫提供一個非常好的測試解決方案。熟悉JUnit的Java開發人員和熟悉Test::Unit框架的Ruby開發人員應該會覺得清單5中的Pythonunittest代碼很容易理解。

清單5.Pythonunittest

classAppTest(unittest.TestCase):

defsetUp(self):

self.app=locomotive.app.Application()

deftearDown(self):

pass

deftest_development_feeds_list(self):

feeds_list=self.app.development_feeds_list()

self.assertTrue(len(feeds_list)==15)

self.assertTrue('feed://news.yahoo.com/rss/stock-markets'infeeds_list)

清單5中的代碼還演示了Python的一個顯著的特點:所有的代碼必須一致縮進,否則無法成功編譯。tearDown(self)方法可能在開始時看起來有點古怪。您可能會問,為什么測試總是被硬編碼為通過?事實上并非如此。這只是在Python中編寫空方法的一種方式。

工具

我真正需要的是一個具備語法突出顯示、代碼完成和斷點調試功能的集成開發環境(IDE),用該環境幫助我掌握我的Python學習曲線。作為使用EclipseIDE進行Java開發的一名用戶,pyeclipse插件是我考慮的下一個工具。雖然該插件有時比較慢,但它工作得相當不錯。我最終投資了PyCharmIDE,它滿足了我的所有IDE要求。

在掌握了Python及其生態系統的基本知識之后,終于來到開始實現機器學習解決方案的時候。

使用Python和NLTK實現分類

實現解決方案涉及捕獲模擬的RSS提要、整理其文本、使用一個NaiveBayesClassifier和kNN算法對類別進行分類。下面將會介紹這些操作中的每一個。

捕獲和解析提要

該項目特別具有挑戰性,因為客戶還沒有定義目標RSS提要列表。因此,也不存在“訓練數據”。所以,在初始開發期間必須模擬提要和訓練數據。

我用來獲得示例提要數據的第一個方法是只提取在某個文本文件中指定的列表中的RSS提要。Python提供了一個很好的RSS提要解析庫,其名稱為feedparser,它抽象不同的RSS和Atom格式之間的差異。簡單的基于文本的對象序列化的另一個有用的庫被幽默地稱為pickle(泡菜)。這兩個庫在清單6的代碼中均有使用,清單6中的代碼將每一個RSS提要捕獲為“腌制過的”對象文件,以備后用。如您所見,Python代碼非常簡潔,且功能強大。

清單6.CaptureFeeds類

importfeedparser

importpickle

classCaptureFeeds:

def__init__(self):

for(i,url)inenumerate(self.rss_feeds_list()):

self.capture_as_pickled_feed(url.strip(),i)

defrss_feeds_list(self):

f=open('feeds_list.txt','r')

list=f.readlines()

f.close

returnlist

defcapture_as_pickled_feed(self,url,feed_index):

feed=feedparser.parse(url)

f=open('data/feed_'+str(feed_index)+'.pkl','w')

pickle.dump(feed,f)

f.close()

if__name__=="__main__":

cf=CaptureFeeds()

下一步的挑戰性之大是出乎意料的。現在,我有了樣例提要數據,必須對它進行分類,以便將它用作訓練數據。訓練數據是向您的分類算法提供的數據集,以便您能從中進行學習。

例如,我使用的樣例提要包括了體育電視網絡公司ESPN。提要的項目之一是關于DenverBroncos橄欖球隊的TimTebow被轉會到NewYorkJets橄欖球隊,在同一時間,Broncos簽了他們新的四分衛PeytonManning。提要結果中的另一個項目是BoeingCompany和它的新噴氣式飛機(jet)。所以,這里的問題是,應該將哪些具體的類別值分配給第一個故事?tebow、broncos、manning、jets、quarterback、trade和nfl這些值都是合適的。但只有一個值可以在訓練數據中被指定為訓練數據類別。同樣,在第二個故事中,類別應該是boeing還是jet?困難的部分在于這些細節。如果您的算法要產生精確的結果,那么大型訓練數據集的準確手工分類非常關鍵。要做到這一點,不應該低估所需的時間。

我需要使用更多的數據,而且這些數據必須已進行了準確的分類,這種情況很快就變得明顯。我可以在哪里找到這樣的數據呢?進入PythonNLTK。除了是一個出色的語言文本處理庫之外,它甚至還帶有可下載的示例數據集,或是其術語中的文集,以及可以輕松訪問此下載數據的應用程序編程接口。要安裝Reuters文集,可以運行如下所示的命令。會有超過10,000篇新聞文章將下載到您的~/nltk_data/corpora/reuters/目錄中。與RSS提要項目一樣,每篇Reuters新聞文章中都包含一個標題和一個正文,所以這個NLTK預分類的數據非常適合于模擬RSS提要。

$python#enteraninteractivePythonshell

>>>importnltk#importthenltklibrary

>>>nltk.download()#runtheNLTKDownloader,thenenter'd'Download

Identifier>reuters#specifythe'reuters'corpus

特別令人感興趣的是文件~/nltk_data/corpora/reuters/cats.txt。它包含了一個列表,其中包含文章文件名稱,以及為每個文章文件分配的類別。文件看起來如下所示,所以,子目錄test中的文件14828中的文章與主題grain有關。

test/14826trade

test/14828grain

自然語言是混亂的

RSS提要分類算法的原始輸入,當然是以英語書寫的文本。原始,確實如此。

從計算機處理的角度來看,英語或任何自然語言(口語或普通的語言)都是極不規范和不準確的。首先,存在大小寫的問題。單詞Bronco是否等于bronco?答案是,也許是。接下來,您要應付標點和空格。bronco.是否等于bronco或bronco,?算是吧。然后,有復數形式和相似的單詞。run、running和ran是否相等?這取決于不同的情況。這三個詞有一個共同的詞根。如果將自然語言詞匯嵌入在標記語言(如HTML)中,情況會怎么樣呢?在這種情況下,您必須處理像bronco這樣的文本。最后,還有一個問題,就是那些經常使用但基本上毫無意義的單詞,像a、and和the。這些所謂的停用詞非常礙事。自然語言非常凌亂;在處理之前,需要對它們進行整理。

幸運的是,Python和NLTK讓您可以收拾這個爛攤子。在清單7中,RssItem類的normalized_words方法可以處理所有這些問題。請特別注意NLTK如何只使用一行代碼就能夠清潔嵌入式HTML標記的原始文章文本!使用一個正則表達式刪除標點,然后每個單詞被拆分,并規范化為小寫。

清單7.RssItem類

classRssItem:

...

regex=re.compile('[%s]'%re.escape(string.punctuation))

...

defnormalized_words(self,article_text):

words=[]

oneline=article_text.replace('','')

cleaned=nltk.clean_html(oneline.strip())

toks1=cleaned.split()

fort1intoks1:

translated=self.regex.sub('',t1)

toks2=translated.split()

fort2intoks2:

t2s=t2.strip().lower()

ifself.stop_words.has_key(t2s):

pass

else:

words.append(t2s)

returnwords

只需這一行代碼就可以從NLTK獲得停用詞列表;并且還支持其他自然語言:

nltk.corpus.stopwords.words('english')

NLTK還提供了一些“詞干分析器”類,以便進一步規范化單詞。請查看有關詞干、詞形歸并、句子結構和語法的NLTK文檔,了解有關的更多信息。

使用NaiveBayes算法進行分類

算法在NLTK中被廣泛使用并利用nltk.NaiveBayesClassifier類實現。Bayes算法根據特性在其數據集中的每個存在或不存在對項目進行分類。在RSS提要項目的情況下,每一個特性都是自然語言的一個給定的(清潔過的)單詞。該算法是“樸實”的,因為它假設特性(在本例中,單詞)之間沒有任何關系。

然而,英語這種語言包含超過250,000個單詞。當然,我不希望為了將RSS提要項目傳遞給算法就要為每個RSS提要項目創建一個包含250,000個布爾值的對象。那么,我會使用哪些單詞?簡單來說,答案是在培訓數據組中除了停用詞之外最常見的單詞。NLTK提供了一個優秀的類,即nltk.probability.FreqDist,我可以用它來識別這些最常用的單詞。在清單8中,collect_all_words方法返回來自所有培訓文章的所有單詞的一個數組。

然后,此數組被傳遞給identify_top_words方法,以確定最頻繁的單詞。nltk.FreqDist類的一個有用的特性是,它實質上是一個散列,但是它的鍵按其對應的值或計數排序。因此,使用[:1000]Python語法可以輕松獲得最頻繁的1000個單詞。

清單8.使用nltk.FreqDist類

defcollect_all_words(self,items):

all_words=[]

foriteminitems:

forwinitem.all_words:

words.append(w)

returnall_words

defidentify_top_words(self,all_words):

freq_dist=nltk.FreqDist(w.lower()forwinall_words)

returnfreq_dist.keys()[:1000]

對于利用NLTKReuters文章數據模擬的RSS提要項目,我需要確定每個項目的類別。為此,我讀取前面提到的~/nltk_data/corpora/reuters/cats.txt文件。用Python讀取一個文件非常簡單,如下所示:

defread_reuters_metadata(self,cats_file):

f=open(cats_file,'r')

lines=f.readlines()

f.close()

returnlines

接下來的步驟是獲得每個RSS提要項目的特性。RssItem類的features方法(如下所示)可以做到這一點。在該方法中,在文章中的all_words數組首先被減少到一個較小的set對象,以消除重復的單詞。然后會遍歷top_words,并在該set中進行比較,確定是否存在重復的單詞。隨后返回1000個布爾值組成的一個散列,以w_為鍵,后面是單詞本身。這個Python非常簡潔。

deffeatures(self,top_words):

word_set=set(self.all_words)

features={}

forwintop_words:

features["w_%s"%w]=(winword_set)

returnfeatures

接下來,我收集了訓練集的RSS提要項目和它們各自的特性,并將它們傳遞給算法。清單9中的代碼演示了這個任務。請注意,分類器被訓練成為只有一行代碼。

清單9.訓練nltk.NaiveBayesClassifier

defclassify_reuters(self):

...

training_set=[]

foriteminrss_items:

features=item.features(top_words)

tup=(features,item.category)#tupisa2-elementtuple

featuresets.append(tup)

classifier=nltk.NaiveBayesClassifier.train(training_set)

NaiveBayesClassifier在運行中的Python程序的內存中,它現在是經過訓練的。現在,我只需遍歷需要進行分類的RSS提要項目集,并要求分類器猜測每個項目的類別。這很簡單。

foriteminrss_items_to_classify:

features=item.features(top_words)

category=classifier.classify(feat)

變得不那么樸實

如前所述,算法假設每個特性之間是沒有關系的。因此,像"machinelearning"和"learningmachine",或者"NewYorkJet"和"jettoNewYork"這樣的短語是等效的(to是一個停用詞)。在自然的語言上下文中,這些單詞之間有明顯的關系。所以,我怎么會讓算法變得“不那么天真”,并識別這些單詞的關系?

其中一個技巧是在特性集內包括常見的雙字詞(兩個單詞為一組)和三字詞(三個單詞為一組)。NLTK以nltk.bigrams(...)和nltk.trigrams(...)的形式對此提供了支持,現在我們對此應該不再感到驚訝了。正如可以從訓練數據組收集最常用的n個單詞那樣,也可以識別最常用的雙字詞和三字詞,并將它們用作特性。

您的結果會有所不同

對數據和算法進行完善是一門藝術。您是否應該進一步規范化單詞集,也許應該包括詞根?或者包括超過1000個最常用單詞?少一點是否合適?或者是否應該使用更大的訓練數據集?是否應該添加更多信用詞或“停用詞根”?這些都是您要問自己的正確問題。使用它們進行實驗,通過試錯法,您可以會為您的數據實現最佳算法。我發現,85%是一個很好的分類成功率。

利用k-NearestNeighbors算法提出建議

客戶希望顯示在選定類別或相似類別中的RSS提要項目。現在,這些項目已經用NaiveBayes算法進行分類,這一要求的第一部分已得到了滿足。較難的部分是實現“或相似類別”的要求。這是機器學習建議器系統開始發揮作用的地方。建議器系統根據其他項目的相似性來建議一個項目。Amazon.com的產品建議和Facebook的朋友建議就是此功能的很好的示例。

k-NearestNeighbors(kNN)是最常用的建議算法。思路是向它提供一組標簽(即類別),并且每個標簽都對應一個數據集。然后,該算法對各數據集進行了比較,以識別相似的項目。數據集由多個數值數組構成,數值的范圍往往被規范化為從0到1。然后,它可以從數據集識別相似的標簽。與只產生一個結果的NaiveBayes不同,kNN可以產生一個有排名的列表,其中包含若干(即,k的值)個建議。

我發現,建議器算法比分類算法更容易理解和實現,但對于本文來說,其代碼過于冗長,并且有復雜的數學,無法在這里詳述。請參閱由Manning出版的一本很好的新書MachineLearninginAction,獲取kNN編碼示例(請參閱參考資料中的鏈接)。在RSS提要項目實現的過程中,標簽值是項目類別,而數據集是最常用的1000個單詞的值數組。同樣,在構建這個數組時,一部分屬于科學范疇,一部分屬于數學范疇,還有一部分屬于藝術范疇。在數組中,每個單詞的值都可以是簡單的0或1的布爾值、文章中單詞出現次數的百分比、該百分比的指數值,或一些其他值。

結束語

探索Python、NLTK和機器學習一直是一個有趣的、令人愉快的經驗。Python語言強大而又簡潔,現在已成為我的開發工具包的核心部分。它非常適合于機器學習、自然語言和數學/科學應用程序。雖然本文中并沒有提到,但我還發現Python對于圖表和繪圖非常有用。

以上內容為大家介紹了探索Python、機器學習和NLTK庫,希望對大家有所幫助,如果想要了解更多Python相關知識,請關注多測師。http://www.jun-ho.cn/

tags: python培訓
聲明:本站稿件版權均屬千鋒教育所有,未經許可不得擅自轉載。
10年以上業內強師集結,手把手帶你蛻變精英
請您保持通訊暢通,專屬學習老師24小時內將與您1V1溝通
免費領取
今日已有369人領取成功
劉同學 138****2860 剛剛成功領取
王同學 131****2015 剛剛成功領取
張同學 133****4652 剛剛成功領取
李同學 135****8607 剛剛成功領取
楊同學 132****5667 剛剛成功領取
岳同學 134****6652 剛剛成功領取
梁同學 157****2950 剛剛成功領取
劉同學 189****1015 剛剛成功領取
張同學 155****4678 剛剛成功領取
鄒同學 139****2907 剛剛成功領取
董同學 138****2867 剛剛成功領取
周同學 136****3602 剛剛成功領取
相關推薦HOT
主站蜘蛛池模板: 免费无码又爽又刺激激情视频| 成人欧美激情亚洲日韩蜜臀| 久久久久久久久精品无码中文字幕| 国产精品亚洲专区无码破解版| 永久免费的啪啪免费网址| 房东天天吃我奶躁我| 成人精品一区二区三区中文字幕| 亚洲最大AV网站在线观看| 四川丰满少妇被弄到高潮| 国产一本一道久久香蕉| 日韩少妇内射免费播放| 成人无码无遮挡很H在线播放| 无码精品一区二区三区在线| 国产妇女馒头高清泬20P多| 午夜福利1000集合集92| 长腿校花无力呻吟娇喘| 国产成人无码免费看片软件| 妞干网在线视频免费观看| 公交车强摁做开腿呻吟| 教官在我腿间疯狂驰聘视频| 日本国产一区二区三区在线观看| 亚洲无AV码一区二区三区| 国产成人午夜在线视频A站| 久久九九精品国产AV片国产 | 国产精品99久久久久久人| 玩爽少妇人妻系列无码| 人妻少妇精品专区性色AV| 日韩人妻OL丝袜AV一二区| 少妇特殊按摩高潮爽翻天| 首页 动漫 亚洲 欧美 日韩| 天天做天天忝天天噜| 日本最新高清一区二区三| 欧美 丝袜 自拍 制服 另类| 国产精品无码久久久久| 差差漫画网页登录页面弹窗 | 亚洲av无码一区二区三区dv| 亚洲国产精品久久一线不卡| 少妇高潮惨叫喷水正在播放| 粉嫩大学生无套内射无码卡视频 | 在线人成视频播放午夜福利| 制服 丝袜 亚洲 中文 综合 | 中国新疆XXXXXL19D| 日本适合十八岁以上的护肤品男| 国产精品色内内在线播放| 一碰就有水的女人男人喜欢?| 人人妻人人澡人人爽精品欧美| 国产精品久久久久久久久电影网| 青苹果影院YY04080看| 在线精品自偷自拍无码中文| 被黑人捅入子宫射精小说| 秋霞国产午夜伦午夜无码灬| 八戒八戒手机在线高清观看WWW| 免费一对一真人视频| 色婷婷五月综合亚洲影院| 亚洲精品无码成人| 天美传媒剧国产MV在线看| 色悠久久久久综合网伊| 奇米影视7777久久精品| 久久高清内射无套| 国产精品免费AV片在线观看| 国产精品国产三级国产AⅤ| 娇妻强被迫伦姧惨叫 在线| 精品熟女少妇AV免费久久| 韩国三级中文字幕HD| 欧美、另类亚洲日本一区二区| 欧美做受又硬又粗又大视频| 精品九九人人做人人爱| 一面膜上边一面膜下边视频| 色婷婷亚洲一区二区三区| 精品卡一卡二卡3卡高清乱码| 丰满少妇A级毛片| 欧美做受又硬又粗又大视频| 一区二区欧美视频| 超薄肉色丝袜一区二区| 国产精品亚洲精品日韩动图 | 洗澡被公强玩好舒服肉欲小说| 少妇午夜AV一区| 亚洲AV无码一区二区三区观看| 国产综合18久久久久久| 毛很浓密超多黑毛| 久久AⅤ人妻少妇嫩草影院| 中国在线观看免费国语版| 公和熄洗澡三级中文字幕| 精品露脸国产偷人在视频| 欧亚一二精品在免费看| 秋霞电影网免费观看| 人妻被黑人与白人巨大中出| 亲子乱AⅤ一区二区三区| 欧洲美女粗暴交视频| 亚洲 日韩 丝袜 熟女 变态| 亚洲AV无码精品无码麻豆| 亚洲AV无码久久精品蜜桃播放| 亚洲AV中文无码乱人伦在线播放 | 人曾交互MOUSE农场| 亚洲AV无码国产精品色午夜| 女人18毛片水真多免费看| 国产精品美女久久久| 亚洲 日韩 丝袜 熟女 变态| 久久精品日日躁夜夜躁欧美| 粉嫩小泬久久久久久久久久小说| 国产精品无码久久久久| 亚洲AV毛茸茸av成熟女人| 秋霞在线看片无码免费| 余生请多指教在线观看免费全集 | 九九电影网午夜理论片| 中文字幕无码毛片免费看| 欧洲精品99毛片免费高清观看| 饥渴老熟妇乱子在线播放| 亚洲AV无码专区在线观看成人 | 日本狂喷奶水在线播放212| 国产成人亚洲精品| 国产一产二产三精华液| 国产又粗又猛又爽又黄的网站| 天天摸天天摸色综合舒服网| 亚洲色成人中文字幕网站| 成人无码H动漫在线网站樱花| 女人丝不挂的正面裸体| 秋霞免费理论片在线观看| 拍摄AV现场失控高潮数次| 外国操逼全黄视频| 女人18片毛片免费| 恶毒美人长批后被宿敌爆炒了| 国产亚洲成AV人片在线观黄桃| 精品丝袜人妻久久久久久| 国产日韩AV免费无码一区二区三| 国产又色又刺激高潮视频| 白嫩少妇激情无码| 男人J桶进女人J无遮挡| 伊人丁香狠狠色综合久久| 哦┅┅快┅┅用力啊熟妇| 嗯啊开小嫩苞HHH好深男男| 亚洲人妻在线视频| 国产精品色视频ⅩXXX| 四虎免费影院1515WWW| 国产成人AV免费观看| 全彩漫画口工18禁无遮H| 差差差软件大全APP推荐免费| 人妻中文字幕制服丝袜| 脱岳裙子从后面挺进去视频| 丰满爆乳在线播放| 国产精品无码免费播放| 国精产品W灬源码1688伊在| 上司人妻互换HD无码| 小SAO货边洗澡边CAO你| 八戒八戒手机在线高清观看WWW| 小S货又想挨C了叫大声点小| 宅男噜噜噜66网站在线观看| 隔壁人妻偷人BD中字| 国产福利一区二区久久| 国产精品无码不卡一区二区三区| 久久精品国产亚洲AV香蕉| 久久夜色精品国产噜噜噜亚洲AV | 国产精品无码无片在线观看 | 日本55丰满熟妇厨房伦| 西西人体午夜大胆无码视频| 丝瓜秋葵草莓香蕉榴莲绿 | 国产成人精品午夜福利| 抖抈短视频APP下载| 国产成人亚洲精品| 日本一道综合久久AⅤ久久| 男人添女人下部高潮全视频| 草棚CAOPORON已满18进| 蜜臀成人片免费视频在线观看| 人人妻人人澡人人爽人人DVD | 国产男女猛烈无遮挡免费视频网站| 男友把舌头都伸进我的嘴巴里了 | 国产精品久久久久久TV| 日韩精品无码一区二区中文字幕| 国产成人三级在线视频网站观看| 窝窝人体色WWW聚色窝| 大乱东京道一本热大交乱| 老师黑色丝袜被躁翻了AV| 亚洲人女屁股眼HD| 亚洲 日韩 丝袜 熟女 变态| 自拍偷自拍亚洲精品情侣| 久久综合九色综合欧美婷婷| 日本丰满熟妇BBXBBXHD| 无码国内精品人妻少妇| 啊灬啊灬啊灬快灬少妇软件| 欧美美女视频熟女一区二区| 首页 综合国产 亚洲 丝袜日本| 办公室紧身女教师| 无码人妻精品一区二区三区免费 | 嗯啊开小嫩苞好深啊H视频| 久久久久久久精品2| 精品久久久久久国产潘金莲| 国产精品久久久久久久9999| 精品露脸国产偷人在视频 | 小洞饿了想吃大香肠喝热牛奶是| 一面膜上边一面膜下边视频| 亚洲国产一区二区三区| 少妇伦子伦精品无码STYLES| 韩国三级大乳在线观看| 亚洲AV中文无码乱人伦在线播放| 欧美人与ZOZOXXXX视频| 在线日韩日本国产亚洲| 男人J放进女人J无遮挡免费看| 国产成人亚洲精品无码H| 一受多攻同做H嗯啊巨肉| 久久成人A毛片免费观看网站| WWW国产无套内射COM| 欧美美女视频熟女一区二区| 成人片国产精品亚洲| 久久久久久精品国产亚洲AV麻豆| 午夜无码福利伦利理免| 疯狂做受XXXX高潮不断| 久久亚洲色WWW成人| 漂亮人妻洗澡被强人人躁| 放在里面边顶边吃饭H| 国产精品亚洲产品一区二区三区| 天海翼一区二区三区高清在线 | 日韩乱码人妻无码中文视频| 一区二区三区中文字幕| 亚洲AV无码乱码国产精品 | 内射射满骚B含着小说| 午夜A级理论片在线播放不卡| 草莓视频APP下载| 小拗女一区二区三区| 热の无码热の有码热の综合| 欧美96在线 | 欧| 国产AⅤ无码专区亚洲AV综合网| 国产午夜亚洲精品理论片八戒| 国产精品久久久久国产A级| 精品国产AⅤ一区二区三区在线看 精品国产第一国产综合精品 | 日韩乱码人妻无码超清蜜桃 | 破外女出血视频全过程| 巨大黑人一级毛片| 在线成本人国语视频动漫| 色婷婷婷亚洲综合丁香五月| 久久久久亚洲AV无码网站| 公和熄洗澡三级中文字幕| 少妇粉嫩小泬喷水视频在线观看 | 亚洲爆乳无码一区二区三区| 日本乱熟人妻精品中文字幕| 成熟丰满熟妇强av无码区| 欧美乱强伦XXXXXXXXXX| 亚洲色成人中文字幕网站| 精品熟人妻一区二区三区四区不卡 | 无码日韩精品一区二区免费 | 无码YY4800亚洲私人影院| 欧美人与性口牲恔配视频| 日本高清在线视频WWW色| 一本大道色卡1卡2卡3| 国产性夜夜春夜夜爽| 色婷婷日日躁夜夜躁| 办公室扒开奶罩揉吮奶头AV| 中文字幕人妻无码系列第三区| 久久九九精品国产AV片国产 | 幼儿稀缺区超清幼儿做的网站| 国产亚洲欧美日韩亚洲中文色| 蜜芽AV在线新地址| 肥胖BMGBMGBMG多毛图片| YELLOW在线观看| 天堂AV无码一区二区三区| 男生女生差差差轮滑免费| 国产男女猛烈无遮挡免费视频 | 天天综合网网欲色| 漂亮人妻去按摩被按中出| 免费无码成人AV在线播| 在线日产精品一区| 国产亚洲午夜高清国产拍精品| 东北老熟女疯狂作爱视频| 亚洲国产群交无码AV| 好男人无码内射AV| 色婷婷日日躁夜夜躁| 中文无码制服丝袜人妻AV| 久久精品国产久精国产思思| 亚洲精品乱码久久久久久按摩| 美女高潮20分钟视频在线观看| 成人欧美日韩一区二区三区| 久久久久久亚洲精品无码| 无码少妇一区二区三区浪潮av| 狠狠五月激情六月丁香| 日本大片免A费观看视频| 国产精品亚洲专区无码导航| 欧美乱人伦人妻中文字幕| 秋霞久久国产精品电影院| 日韩精品无码一区二区中文字幕| 天天综合网网欲色| 日本伦奷在线播放| 激情伊人五月天久久综合| 国产成人无码免费看片软件| 国产精品偷窥熟女精品视频| 成年轻人电影WWW无码| 国产精品成人99一区无码| 性一交一乱一色一视频| 毛片亚洲AV无码精品国产午夜 | 暗交小拗女一区二区| 久久夜色精品国产噜噜麻豆| 熟妇五十路六十路息与子| 男女啪啪摸下面喷水网站| 国产免费看MV大片的软件| 在线观看免费A∨网站| 青草青草视频2免费观看| 成人无码A区在线观看视频| 美女扒开内裤无遮挡| 人久久精品中文字幕无码小明47| 一本大道东京热无码AV| 性色AV闺蜜一区二区三区| WW欧日韩视频高清在线| 被黑人捅入子宫射精小说| 公的粗大挺进了我的密道视频| 天天爽夜夜爽人人爽一区二区 | 久久精品第一国产久精国产宅男6| 久久AⅤ人妻少妇嫩草影院| 无码人妻AV一区二区三区蜜臀| 亚洲成A人V在线蜜臀| 娇小6一8XXXXX| 无码A级毛片视频| 亚洲伊人成无码综合影院| 成人免费无码H黄网站WWW| 亚洲AV无码专区国产乱码软件| А√天堂网WWW在线搜索| 亚洲精品成人AV在线| 亚洲AV永久无码天堂网毛片| 亚洲日韩精品A∨片无码加勒比 | 有人有在线观看的片吗WWW| 韩国19禁床震无遮掩免费| 日本无吗无卡V免费清高清| 色婷婷成人综合激情免费视频| 国产熟女一区二区| 极品少妇的粉嫩小泬看片| 日本处ⅩⅩ人╳护士19| 美女图片禁欲系高级感| 小SB是不是想被C了| 中文字幕AV日韩精品一区二区| 美女扒开内裤无遮挡| 国产放荡AV剧情演绎麻豆| 差差漫画在线观看登录页面弹窗 | 亚洲国产群交无码AV| 吃奶呻吟打开双腿做受在线视频| 亲近相奷对白中文字幕| 精品日产一区二区三区| 丰满人妻中伦妇伦精品APP| 秋霞电影网免费观看| 波多野结衣AV高清一区二区三区| 公粗挺进了我的密道在线观看| 小SB是不是想被C了| 被多男摁住灌浓精| 成人国产一区二区三区精品不卡| 欧美乱人伦人妻中文字幕| 欧美性色欧美A在线播放| 欧美成人性生活视频| 少妇自慰喷AV免费网站| 久久国产精品无码HDAV| 亚洲已满18点击进入在线看片| 日本适合十八岁以上的护肤品| 日韩精品一区二区三区中文| 久久精品人妻一区二区三区一| 国产免费观看久久黄AV片| 最新国产成人AB网站| 国产成人无码A区在线观看视频| 国产成人免费无码AV在线播放| 久久久久高潮毛片免费全部播放| 亚洲AV永久无码精品无码影片| 国产精品成人VA在线观看| 精品卡一卡二卡3卡高清乱码| 欧美亚洲一区二区三区 | 成人无码H动漫在线网站樱花 | 国内精品久久久人妻中文字幕| 小诗的公交车日记免费读| 忘忧草在线影院WWW神马| 欧美丰满熟妇BBB久久久| 久久国产精品77777| 在线 | 18精品免费1区2| 性欧美丰满熟妇XXXX性久久久| 少妇高潮惨叫喷水正在播放| 人与畜禽共性关系的重要性| 国产裸体XXXX视频在线播放 | 丰满爆乳在线播放| 久久久久亚洲AV无码永不| 在线精品自偷自拍无码中文| 精品人妻一区二区三区四区九九 | 国产成人亚洲综合A∨| 强行糟蹋人妻HD中文字幕| 亚洲国产另类久久久精品| 无码视频免费一区二三区 | 国产精品青青青高清在线| 欧洲美女粗暴牲交免费观看| 免费观看高清大片的播放器| 内射中出无码护士在线| 护士交换粗吟配乱大交| 国产成人综合久久精品推最新| 最新国产精品亚洲| 经典国产乱子伦精品视频| 中文字幕乱妇无码AV在线| 久久精品国产亚洲AV高清色欲| 我和岳乱妇三级高清电影| 成年轻人电影WWW无码| 高跟丝袜AV专区| 公的下面好大弄得我好爽| 国产精品丝袜高跟鞋| 国内精品视频一区二区三区八戒| 熟妇人妻中文字幕无码老熟妇| 五十老熟女高潮嗷嗷叫| 狠狠躁天天躁男人| 张柏芝性XXXXXⅩ| 产高清在线精品一区二区三区| 亚洲AV无码国产精品夜色午夜| 欧美疯狂性受XXXXX喷水| 熟妇人妻无乱码中文字幕| 日本多人强伦姧人妻完整版| 天天AV天天爽无码中文| 哦┅┅快┅┅用力啊熟妇| 你的奶好大让老子摸摸的说说| 日本欧美大码A在线观看| 久久久久久久久久国产精品免费| 国产丰满大屁股XXXX| 欧美free叉叉叉叉极品少妇| 久久99精品久久久久久国产|