.. image:: https://travis-ci.org/pattern3/pattern.svg?branch=master :target: https://travis-ci.org/pattern3/pattern
Pattern is a web mining module for Python. It has tools for:
It is well documented and bundled with 50+ examples and 350+ unit tests. The source code is licensed under BSD and available from http://www.clips.ua.ac.be/pages/pattern.
.. figure:: http://www.clips.ua.ac.be/media/pattern_schema.gif :alt: Pattern example workflow
2.6
BSD, see LICENSE.txt
for further details.
Pattern is written for Python 2.5+ (no support for Python 3 yet). The module has no external dependencies except when using LSA in the pattern.vector module, which requires NumPy (installed by default on Mac OS X). To install Pattern so that it is available in all your scripts, unzip the download and from the command line do:
.. code:: bash
cd pattern-2.6
python setup.py install
If you have pip, you can automatically download and install from the PyPi repository:
.. code:: bash
pip install pattern
If none of the above works, you can make Python aware of the module in three ways: - Put the pattern folder in the same folder as your script.
c:\python26\Lib\site-packages\
(Windows), * /Library/Python/2.6/site-packages/
(Mac OS X), *
/usr/lib/python2.6/site-packages/
(Unix). - Add the location of the
module to sys.path
in your script, before importing it:.. code:: python
MODULE = '/users/tom/desktop/pattern'
import sys; if MODULE not in sys.path: sys.path.append(MODULE)
from pattern.en import parsetree
This example trains a classifier on adjectives mined from Twitter.
First, tweets that contain hashtag #win or #fail are collected. For
example: "$20 tip off a sweet little old lady today #win". The word
part-of-speech tags are then parsed, keeping only adjectives. Each tweet
is transformed to a vector, a dictionary of adjective → count items,
labeled WIN
or FAIL
. The classifier uses the vectors to learn
which other tweets look more like WIN
or more like FAIL
.
.. code:: python
from pattern.web import Twitter
from pattern.en import tag
from pattern.vector import KNN, count
twitter, knn = Twitter(), KNN()
for i in range(1, 3):
for tweet in twitter.search('#win OR #fail', start=i, count=100):
s = tweet.text.lower()
p = '#win' in s and 'WIN' or 'FAIL'
v = tag(s)
v = [word for word, pos in v if pos == 'JJ'] # JJ = adjective
v = count(v) # {'sweet': 1}
if v:
knn.train(v, type=p)
print knn.classify('sweet potato burger')
print knn.classify('stupid autocorrect')
http://www.clips.ua.ac.be/pages/pattern
De Smedt, T., Daelemans, W. (2012). Pattern for Python. Journal of Machine Learning Research, 13, 2031–2035.
The source code is hosted on GitHub and contributions or donations are
welcomed, see the developer documentation <http://www.clips.ua.ac.be/pages/pattern#contribute>
__.
If you use Pattern in your work, please cite our reference paper.
Pattern is bundled with the following data sets, algorithms and Python packages:
Authors:
Contributors (chronological):