<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>140dev &#187; Quality Control</title>
	<atom:link href="http://140dev.com/twitter-api-programming-blog/category/quality-control/feed/" rel="self" type="application/rss+xml" />
	<link>http://140dev.com</link>
	<description>Twitter API Programming Tips, Tutorials, Source Code Libraries and Consulting</description>
	<lastBuildDate>Wed, 31 Jul 2019 10:03:15 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.6</generator>
		<item>
		<title>How is Twitter programming better than Twitter search?</title>
		<link>http://140dev.com/twitter-api-programming-blog/how-is-twitter-programming-better-than-twitter-search/</link>
		<comments>http://140dev.com/twitter-api-programming-blog/how-is-twitter-programming-better-than-twitter-search/#comments</comments>
		<pubDate>Fri, 08 Jun 2012 12:51:28 +0000</pubDate>
		<dc:creator>Adam Green</dc:creator>
				<category><![CDATA[Data Mining Tweets]]></category>
		<category><![CDATA[Database Cache]]></category>
		<category><![CDATA[Quality Control]]></category>
		<category><![CDATA[Twitter Spam]]></category>

		<guid isPermaLink="false">http://140dev.com/?p=1540</guid>
		<description><![CDATA[This is a question I frequently get asked by new clients. They know there is a Twitter API available to collect tweets, but they have no idea how the results differ from just asking for tweets with Search.Twitter.com. I&#8217;ve recently explained the fact that a tweet database lets you create a long-term store that cannot [&#8230;]]]></description>
				<content:encoded><![CDATA[<p></p><p>This is a question I frequently get asked by new clients. They know there is a Twitter API available to collect tweets, but they have no idea how the results differ from just asking for tweets with Search.Twitter.com. I&#8217;ve recently <a href="http://140dev.com/twitter-api-programming-blog/twitter-consultant-tip-tweet-data-is-priceless/">explained</a> the fact that a tweet database lets you create a long-term store that cannot be reproduced or purchased any other way. That is just the starting point. The real advantage of Twitter API programming is the way it allows you to add value to a collection of tweets:</p>
<ul>
<li>You can apply <a href="http://140dev.com/twitter-api-programming-blog/screening-a-tweet-stream-for-quality-control/">quality control rules</a> that let you filter out false positives for the keywords you are using in your collection query.</li>
<li>I also like to apply simple &#8220;filth controls&#8221; to all tweet streams that get displayed on sites. This starts with a list of George Carlin&#8217;s 7 words you can&#8217;t say on television, and grows into a list of the more creative racist and misogynist words so popular on Twitter. Excluding tweets with these words makes Twitter seem much more civilized.</li>
<li>A simple <a href="http://140dev.com/twitter-api-programming-blog/language-detection-for-tweets-part-1/">language detection algorithm</a> will let you tweets for a specific language and exclude all other languages.</li>
<li>By checking the tweets you receive for spammy words, like free, coupon, buy now, or sale, you can clean out a high percentage of spam tweets, and if you check new tweets for duplicates, you can identify spammers and blacklist them.</li>
<li>If you screen the user account data for each tweet&#8217;s author, you can exclude accounts that have a spammy profile, such as a default avatar, no followers, or an account that has only been in existence a few days.</li>
<li>Or you can come up with an influence algorithm, such as follower count or frequency of mentions, to select tweets from the most influential users.</li>
</ul>
<p>These are just the generic ways to add value to a tweet aggregation site. Once you start working with a client with specific application needs, there are many ways to add value to Twitter. This is an iterative process that keeps improving the quality of your tweet collection.</p>
<p>So the simple answer to the question is that Twitter programming produces much higher quality results than Twitter search.</p>
]]></content:encoded>
			<wfw:commentRss>http://140dev.com/twitter-api-programming-blog/how-is-twitter-programming-better-than-twitter-search/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Screening a tweet stream for quality control</title>
		<link>http://140dev.com/twitter-api-programming-blog/screening-a-tweet-stream-for-quality-control/</link>
		<comments>http://140dev.com/twitter-api-programming-blog/screening-a-tweet-stream-for-quality-control/#comments</comments>
		<pubDate>Fri, 20 Jan 2012 12:05:37 +0000</pubDate>
		<dc:creator>Adam Green</dc:creator>
				<category><![CDATA[Quality Control]]></category>
		<category><![CDATA[Tweet Aggregation]]></category>

		<guid isPermaLink="false">http://140dev.com/?p=1252</guid>
		<description><![CDATA[We&#8217;ve been working on a college football recruiting site called DirectSnap.com for a couple of months, and the most interesting aspect of the technology behind this site is the quality control algorithm I had to develop. Most of the tweet streams we work on, such as 2012twit.com, are based on collecting tweets for either a [&#8230;]]]></description>
				<content:encoded><![CDATA[<p></p><p>We&#8217;ve been working on a college football recruiting site called <a href="http://directsnap.com">DirectSnap.com</a> for a couple of months, and the most interesting aspect of the technology behind this site is the quality control algorithm I had to develop. Most of the tweet streams we work on, such as <a href="http://2012twit.com">2012twit.com</a>, are based on collecting tweets for either a set of screen names or real names that are distinctive, such as politicians. When you find a match for Newt Gingrich or Mitt Romney, you can be fairly sure you have the right person. </p>
<p>In the case of DirectSnap, the tweet collection is based on the first and last name of 250 high school football players. Right away I knew I would have a problem when I found Michael Moore in the list of potential recruits. Randy Johnson was going to be even trickier, since the baseball player with this name was likely to be tweeted about by the same sports fans as the football recruit we were tracking. Identifying college teams is also tricky. For example, the word &#8216;Florida&#8217; in a tweet with a player&#8217;s name could refer to the University of Florida or Florida State University. </p>
<p><a href="http://directsnap.com"><img class="alignleft" src="http://140dev.com/blog_images/quality.png" /></a></p>
<p>The solution I came up with was creating a list of exclusion keywords for each player and team. If a tweet contains &#8216;Michael Moore&#8217;, but it also has words like fat, hypocrite, film, or liberal, it probably is not about the football player. A tweet with a player&#8217;s name is assigned to the University of Florida if it contains &#8216;Florida&#8217;, but not &#8216;Florida State&#8217;. This first level of screening did a good job of filtering out false positives, such as the wrong Michael Moore,  but we wanted to curate the tweets automatically to select the highest quality. The goal was to end up with a tweet stream that was much more interesting than what you could get with Twitter&#8217;s search. </p>
<p>To do this we added a set of high quality words to the quality screen, like the team position or hometown name of each player. We found that tweets with this extra information was generally from users who were serious about reporting details, not just random fans chanting a player&#8217;s name repeatedly. We used these quality words in two ways. Each time a quality word was found in a tweet, 1 point was added to a quality score for the tweet and for the user who sent the tweet. This allows us to select tweets for display that have a minimum quality score, and that are from a user with a minimum quality score. </p>
<p>To see how well this system works, try comparing the <a href="http://directsnap.com/recruits/2012/michael-moore/">DirectSnap page for Michael Moore</a>, and <a href="https://twitter.com/#!/search/michael%20moore">Twitter search</a> for the same words. My experience is that users find false positives very upsetting. They think computers actually understand what they are searching for, and when they see a false positive, the reaction is always that the website is &#8220;stupid&#8221;. My favorite example of this is when people complain about Google Alerts for their own name returning blog posts or tweets they have written. The reaction is usually &#8220;How stupid can Google be? Doesn&#8217;t it know that I don&#8217;t want to be alerted about my own writing?&#8221; On the other hand, they never seem to be upset about missing results. So ending up with a subset of all possible matches, but with no visible false positives is always the best goal. </p>
]]></content:encoded>
			<wfw:commentRss>http://140dev.com/twitter-api-programming-blog/screening-a-tweet-stream-for-quality-control/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
