我想从下面的文档中计算tf-idf.我正在使用python和pandas.
import pandas as pd
df = pd.DataFrame({'docId': [1,2,3],
'sent': ['This is the first sentence','This is the second sentence', 'This is the third sentence']})
Run Code Online (Sandbox Code Playgroud)
首先,我想我需要为每一行获取word_count.所以我写了一个简单的函数:
def word_count(sent):
word2cnt = dict()
for word in sent.split():
if word in word2cnt: word2cnt[word] += 1
else: word2cnt[word] = 1
return word2cnt
Run Code Online (Sandbox Code Playgroud)
然后,我将它应用于每一行.
df['word_count'] = df['sent'].apply(word_count)
Run Code Online (Sandbox Code Playgroud)
但现在我迷路了.我知道如果我使用Graphlab,有一种简单的方法来计算tf-idf,但我想坚持使用开源选项.Sklearn和gensim都看起来势不可挡.获得tf-idf的最简单的解决方案是什么?
我是CRF ++的新手.我正在教自己查看它的手册:http: //crfpp.googlecode.com/svn/trunk/doc/index.html?source = navbar#templ
我不明白这意味着什么:
这是一个描述unigram功能的模板.当你给一个
模板"U01:%x [0,1]",CRF ++自动生成一组功能
函数(func1 ... funcN)如:
func1 = if(output = B-NP and feature ="U01:DT")返回1否则返回0
func2 = if(output = I-NP and feature ="U01:DT")返回1否则返回0
func3 = if(output = O and feature ="U01:DT")返回1否则返回0
.... funcXX = if(output = B-NP and feature ="U01:NN")返回1否则返回0
funcXY = if(output = O and feature ="U01:NN")return 1 else return 0.模板生成的要素函数数量
等于(L*N),其中L是输出的数量
为什么Unigram功能有很多行,它们是什么意思?
我想使用 lxml.XMLSchema 针对 XSD 文件验证 XML 文件。但问题是 XSD 是 1.1。所以它不起作用。
这是 XML 的一部分:
<?xml version="1.0" encoding="UTF-8"?>
<dictionary xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="!!assert.xsd">
<SizeType>10</SizeType>
</dictionary>
Run Code Online (Sandbox Code Playgroud)
这是它的 XSD 文件:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<xs:element name="SizeType">
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:assertion test="$value = 10"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:schema>
Run Code Online (Sandbox Code Playgroud)
那么,是否可以针对使用xs:assertion语句 (1.1)的 XSD 文件验证 XML 文件?
我认为这个问题与此密切相关:lxml with schema 1.1
我尝试使用 lxml 验证一个大约有 100 万行的 xml 文件。这是我的代码。
import codecs
import lxml.etree as ET
xsd_file = codecs.open(r'test.xsd', 'rb', 'utf-8')
xml_file = codecs.open(r'test.xml', 'rb', 'utf-8')
xmlschema_doc = ET.parse(xsd_file)
xmlschema = ET.XMLSchema(xmlschema_doc)
doc = ET.parse(xml_file)
print (xmlschema.error_log.filter_from_errors())
Run Code Online (Sandbox Code Playgroud)
但是我发现如果错误行超过 65535,输出总是显示“65535:0”。也就是说,
file:///C:test.xml:65535:0:ERROR:SCHEMASV:SCHEMAV_ELEMENT_CONTENT: Element 'word': Missing child element(s).
file:///C:test.xml:65535:0:ERROR:SCHEMASV:SCHEMAV_ELEMENT_CONTENT: Element 'word': Missing child element(s).
file:///C:test.xml:65535:0:ERROR:SCHEMASV:SCHEMAV_ELEMENT_CONTENT: Element 'word': Missing child element(s).
Run Code Online (Sandbox Code Playgroud)
所以我无法确定上面的线条在哪里。有什么解决办法吗?
我想在Python 3.3中将一些字符转换为五位数的unicode.例如,
import re
print(re.sub('a', u'\u1D15D', 'abc' ))
Run Code Online (Sandbox Code Playgroud)
但结果与我的预期不同.我必须把角色本身,而不是代码点?有没有更好的方法来处理五位数的unicode字符?
有一个xml文件:
<body>
<entry>
I go to <hw>to</hw> to school.
</entry>
</body>
Run Code Online (Sandbox Code Playgroud)
由于某种原因,我在使用 lxml 解析器解析它之前将其更改<hw>为<hw>和</hw>to 。</hw>
<body>
<entry>
I go to <hw>to</hw> to school.
</entry>
</body>
Run Code Online (Sandbox Code Playgroud)
但是修改解析的xml数据后,我想获取一个<hw>元素,而不是<hw>. 我怎样才能做到这一点?
在 ms access 2010 中有一个名为 sample 的表,其中仅包含一列 body (type: text):
<name>John</name><age>12</age>
Run Code Online (Sandbox Code Playgroud)
我想删除括号内的每个字符串。看到这个:
John12
Run Code Online (Sandbox Code Playgroud)
我添加了 Microsoft VBScript 正则表达式 5.5 库并创建了这个模块:
Function Replace_Regex(str1, patrn, replStr)
Dim regEx
Set regEx = New RegExp
regEx.Pattern = patrn
regEx.IgnoreCase = True
Replace_Regex = regEx.Replace(str1, replStr)
End Function
Run Code Online (Sandbox Code Playgroud)
然后,我运行这个查询:更新样本集 body = Replace_Regex(body, "<[^>]+?", "")
但结果是:
ame>John</name><age>12</age>
Run Code Online (Sandbox Code Playgroud)
所以有什么问题?