文本预处理库
项目描述
Plane
Plane 是一个使用肌肉力量将切割刀片压过木材表面来塑形木材的工具。
from Wikipedia
此包用于从文本中提取或替换特定部分,如URL、电子邮件、HTML标签、电话号码等。还支持标点符号规范化和移除。
查看完整 文档。
安装
仅支持Python 3.x。
pip
pip install plane
从源安装
python setup.py install
特性
- 无其他依赖项
- 内置正则表达式模式:
plane.pattern.Regex
- 自定义正则表达式模式
- 模式组合
- 提取、替换模式
- 分句
- 链式函数调用:
plane.plane.Plane
- 管道:
plane.Pipeline
用法
快速开始
使用正则表达式 提取
或 替换
模式
from plane import EMAIL, extract, replace
text = 'fake@no.com & fakefake@nothing.com'
emails = extract(text, EMAIL) # this return a generator object
for e in emails:
print(e)
>>> Token(name='Email', value='fake@no.com', start=0, end=11)
>>> Token(name='Email', value='fakefake@nothing.com', start=14, end=34)
print(EMAIL)
>>> Regex(name='Email', pattern='([a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\\.[a-zA-Z0-9-]+)', repl='<Email>')
replace(text, EMAIL) # replace(text, Regex, repl), if repl is not provided, Regex.repl will be used
>>> '<Email> & <Email>'
replace(text, EMAIL, '')
>>> ' & '
模式
Regex
是一个包含3个元素的namedtuple
名称
pattern
:正则表达式repl
:替换标记,在调用replace
函数时将替换匹配的正则表达式
# create new pattern
from plane import build_new_regex
custom_regex = build_new_regex('my_regex', r'(\d{4})', '<my-replacement-tag>')
您还可以从默认模式中构建新的模式。
注意:这仅适用于语言范围。
from plane import extract, build_new_regex, CHINESE_WORDS
ASCII = build_new_regex('ascii', r'[a-zA-Z0-9]+', ' ')
WORDS = ASCII + CHINESE_WORDS
print(WORDS)
>>> Regex(name='ascii_Chinese_words', pattern='[a-zA-Z0-9]+|[\\U00004E00-\\U00009FFF\\U00003400-\\U00004DBF\\U00020000-\\U0002A6DF\\U0002A700-\\U0002B73F\\U0002B740-\\U0002B81F\\U0002B820-\\U0002CEAF\\U0002CEB0-\\U0002EBEF]+', repl=' ')
text = "自然语言处理太难了!who can help me? (╯▔🔺▔)╯"
print(' '.join([t.value for t in list(extract(text, WORDS))]))
>>> "自然语言处理太难了 who can help me"
from plane import CHINESE, ENGLISH, NUMBER
CN_EN_NUM = sum([CHINESE, ENGLISH, NUMBER])
text = "佛是虚名,道亦妄立。एवं मया श्रुतम्। 1999 is not the end of the world. "
print(' '.join([t.value for t in extract(text, CN_EN_NUM)]))
>>> "佛是虚名,道亦妄立。 1999 is not the end of the world."
默认正则表达式: 详情
URL
:仅ASCIIEMAIL
:local-part@domainTELEPHONE
:如xxx-xxxx-xxxxSPACE
:\t
,\n
,\r
,\f
,\v
HTML
:HTML标签、脚本部分和CSS部分ASCII_WORD
:英文单词、数字、<tag>
等。CHINESE
:所有汉字字符(仅汉子和标点符号)CJK
:所有中、日、韩(CJK)字符和标点符号THAI
:所有泰文和标点符号VIETNAMESE
:所有越文和标点符号ENGLISH
:所有英文字符和标点符号数字
: 0-9
正则表达式名称 | 替换 |
---|---|
URL | '<URL>' |
电子邮件 | '<Email>' |
电话 | '<Telephone>' |
空格 | ' ' |
HTML | ' ' |
ASCII_WORD | ' ' |
中文 | ' ' |
CJK | ' ' |
分词
segment
可以用于分词,英文和数字如 'PS4' 将保持原样,其他如中文 '中文' 将分割成单个单词格式 ['中', '文']
。
from plane import segment
segment('你看起来guaiguai的。<EOS>')
>>> ['你', '看', '起', '来', 'guaiguai', '的', '。', '<EOS>']
标点符号
punc.remove
将所有 Unicode 标点符号替换为 ' '
或您发送给此函数作为参数的 repl
。 punc.normalize
将一些 Unicode 标点符号规范化为英文标点符号。
注意:'+', '^', '$', '~' 以及一些字符不是标点符号。
from plane import punc
text = 'Hello world!'
punc.remove(text)
>>> 'Hello world '
# replace punctuation with special string
punc.remove(text, '<P>')
>>> 'Hello world<P>'
# normalize punctuations
punc.normalize('你读过那本《边城》吗?什么编程?!人生苦短,我用 Python。')
>>> '你读过那本(边城)吗?什么编程?!人生苦短,我用 Python.'
链式函数
Plane
包含 extract
、replace
、segment
和 punc.remove
、punc.normalize
,并且这些方法可以链式调用。由于 segment
返回列表,它只能在链式调用的末尾调用。
Plane.text
保存处理后的文本结果,Plane.values
保存提取的字符串结果。
from plane import Plane
from plane.pattern import EMAIL
p = Plane()
p.update('My email is my@email.com.').replace(EMAIL, '').text # update() will init Plane.text and Plane.values
>>> 'My email is .'
p.update('My email is my@email.com.').replace(EMAIL).segment()
>>> ['My', 'email', 'is', '<Email>', '.']
p.update('My email is my@email.com.').extract(EMAIL).values
>>> [Token(name='Email', value='my@email.com', start=12, end=24)]
管道
如果您喜欢,可以使用 Pipeline
。
segment
和 extract
只能出现在链式调用的末尾。
from plane import Pipeline, replace, segment
from plane.pattern import URL
pipe = Pipeline()
pipe.add(replace, URL, '')
pipe.add(segment)
pipe('http://www.guokr.com is online.')
>>> ['is', 'online', '.']
项目详情
下载文件
下载适合您平台的应用程序。如果您不确定选择哪个,请了解更多关于 安装包 的信息。
源代码发行版
plane-0.2.1.tar.gz (13.2 kB 查看哈希值)
构建发行版
plane-0.2.1-py3-none-any.whl (11.4 kB 查看哈希值)
关闭
plane-0.2.1.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | f84a07343212ec69bee9a1765d14020cb2682e0664f50e44e03d3fef593b9a18 |
|
MD5 | 16cabcdbb811b08634ce2566e1e1bc7f |
|
BLAKE2b-256 | 8c93adea35ac917c1d2d96384204d573c8f39dc6c6893ea54a5758c401c76ba3 |
关闭
plane-0.2.1-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 5bf80b7e4078bb65c42f94a77e6669b71b4530784063d6fb0cab796e1d9cdd3c |
|
MD5 | 123b45a0298f971a3736ce52dfc92cb1 |
|
BLAKE2b-256 | 7c442cef3fb807d7db6d3ccd0c8359a6d817b4478321889a00065b9b501a3623 |