22.2.2 Lightly Supervised Approaches to Relation Analysis
The supervised machine learning approach just described assumes that we have ready access to a large collection of previously annotated material with which to train classifiers. Unfortunately, this assumption is impractical in many real-
world settings. A simple approach to extracting relational information without large amounts of annotated material is to use regular expression patterns to match text segments that are likely to contain expressions of the relations in which we are interested.
Consider the problem of building a table containing all the hub cities that various airlines utilize. Assuming we have access a search engine that permits some form of phrasal search with wildcards, we might try something like the following as a query:
/* has a hub at */
Given access to a reasonable amount of material of the right kind, such a search will yield a fair number of correct answers. A recent Google search using this pattern yields the following relevant sentences among the return set.
(22.4) Milwaukee-based Midwest has a hub at KCI.
(22.5) Delta has a hub at LaGuardia.
(22.6) Bulgaria Air has a hub at Sofia Airport, as does Hemus Air.
(22.7) American Airlines has a hub at the San Juan airport.
Of course, patterns such as this can fail in the two ways we discussed all the way back in Ch. 2: by finding some things they shouldn't, and by failing to find things they should. As an example of the first kind of error, consider the following sentences that were also included the earlier return set.
(22.8) airline j has a hub at airport k
(22.9) The catheter has a hub at the proximal end
(22.10) A star topology often has a hub at its center.
We can address these errors by making our proposed pattern more specific. In this case, replacing the unrestricted wildcard operator with a named entity class restriction would rule these examples out:
/ [ORG] has a hub at [LOC] /
The second problem is that we can't know if we've found all the hubs for all airlines, since we've limited ourselves to this one rather specific pattern. Consider the following close calls missed by our first pattern.
(22.11) No frills rival easyJet, which has established a hub at Liverpool...
(22.12) Ryanair also has a continental hub at Charleroi airport (Belgium).
These examples are missed because they contain minor variations that cause the original pattern to fail. There are two ways to address this problem. The first is to generalize our pattern to capture expressions like these that contain the information we are seeking. This can be accomplished by relaxing the pattern to allow matches that skip parts of the candidate text. Of course, this approach is likely to introduce
more of the false positives that we tried to eliminate by making our pattern more specific in the first place.
The second, more promising solution, is to expand our set of specific high-precision patterns. Given a large and diverse document collection, an expanded set of patterns should be able to capture more of the information we're looking for. One way to acquire these additional patterns is to simply have human analysts familiar with the domain come up with more patterns and hope to get better coverage. A more interesting automatic alternative is to induce new patterns by bootstrapping from the initial search results from a small set of seed patterns.
To see how this works, let's assume that we've discovered that Ryanair has a hub at Charleroi. We can use this fact to discover new patterns by finding other mentions of this relation in our corpus. The simplest way to do this is to search for the terms Ryanair, Charleroi and hub in some proximity. The following are among the results from a recent search in Google News.
(22.13) Budget airline Ryanair, which uses Charleroi as a hub, scrapped all weekend flights out of the airport.
(22.14) All flights in and out of Ryanair's Belgian hub at Charleroi airport were grounded on Friday...
(22.15) A spokesman at Charleroi, a main hub for Ryanair, estimated that 8000 passengers had already been affected.
From these results, patterns such as the following can be extracted that look for relevant named entities of various types in the right places.
/ [ORG], which uses [LOC] as a hub /
/ [ORG]'s hub at [LOC] /
/ [LOC] a main hub for [ORG] /
These new patterns can then be used to search for additional tuples.
Fig. 22.16 illustrates the overall bootstrapping approach. This figure shows that the dual nature of patterns and seeds permits the process to start with either a small set of seed tuples or a set of seed patterns. This style of bootstrapping and pattern-based relation extraction is closely related to the techniques discussed in Ch. 20 for extracting hyponym and meronym-based lexical relations.
There are, of course, a fair number of technical details to be worked out to actually implement such an approach. The following are among some of the key problems.
• Representing the search patterns
- Assessing the accuracy and coverage of discovered patterns
• And assessing the reliability of the discovered tuples

Patterns are typically represented in a way that captures the following four factors.
• Context prior to the first entity mention
• Context between the entity mentions
• Context following the second mention
• The order of the arguments in the pattern
Contexts are either captured as regular expression patterns or as vectors of features similar to those described earlier for machine learning-based approaches. In either case, they can be defined over character strings, word-level tokens, or syntactic and semantic structures. In general, regular expression approaches tend to be very specific, yielding high precision results; feature-based approaches, on the other hand, are more capable of ignoring potentially inconsequential elements of contexts.
Our next problem is how to assess the reliability of newly discovered patterns and tuples. Recall that we don't, in general, have access to annotated materials giving us the right answers. We therefore have to rely on the accuracy of the
initial seed sets of patterns and/or tuples for gold-standard evaluation, and we have to ensure that we don't permit any significant semantic drift to occur as we're learning new patterns and tuples. Semantic drift occurs when an erroneous pattern leads to the introduction of erroneous tuples, which can then, turn, lead to the creation of problematic patterns.
To see this consider the following example.
(22.16) Sydney has a ferry hub at Circular Quay.
If accepted as a positive example, this expression could lead to the introduction of the tuple $ \langle \text{Sydney, CircularQuay} \rangle $. Patterns based on this tuple could propagate further errors into the database.
There are two factors that need to be balanced in assessing a proposed new pattern: the pattern's performance with respect to the current set of tuples, and the pattern's productivity in terms of the number of matches it produces in the document collection. More formally, given a document collection $ \mathcal{D} $, a current set of tuples T, and a proposed pattern p, there are three factors that we need to track.
• hits: the set of tuples in T that p matches while looking in D;
• misses: The set of tuples in T that p misses while looking at D;
• finds: The total set of tuples that p finds in D.
The following equation balances these considerations (Riloff and Jones, 1999).
$$ C o n f_{R l o g F}(p)=\frac{h i t s_{p}}{h i t s_{p}+m i s s e s_{p}}\times l o g(f i n d s_{p}) $$
It is useful to be able to treat this metric as a probability, so we'll need to normalize it. A simple way to do this is to track the range of confidences in a development set and divide by some previously observed maximum confidence (Agichtein and Gravano, 2000).
We can assess the confidence in a proposed new tuple by combining the evidence supporting it from all the patterns $ P' $ that match that tuple in $ \mathcal{D} $ (Agichtein and Gravano, 2000). One way to combine such evidence is the noisy-or technique. Assume that a given tuple is supported by a subset of the patterns in $ P $, each with its own confidence assessed as above. In the noisy-or model, we make two basic assumptions. First, that for a proposed tuple to be false, all of its supporting patterns must have been in error, and second that the sources of their individual failures are all independent. If we loosely treat our confidence measures as probabilities, then the probability of any individual pattern $ p $ failing is $ 1 - \text{Conf}(p) $; the probability of all of the supporting patterns for a tuple being wrong is the product of their individual failure probabilities, leaving us with the following equation for our confidence in a new tuple.
$$ Conf(t)=1-\prod_{p\in P^{\prime}}1-Conf(p) $$
The independence assumptions underlying the noisy-or model are very strong indeed. If the failure mode of the patterns are not independent, then the method will overestimate the confidence for the tuple. This overestimate is typically compensated for by setting a very high threshold for the acceptance of new tuples.
Given these measures, we can dynamically assess our confidence in both new tuples and patterns as the bootstrapping process iterates. Setting conservative thresholds for the acceptance of new patterns and tuples should help prevent the system from drifting from the targeted relation.
Although there have been no standardized evaluations for this style of relation extraction on publicly available sources, the technique has gained wide acceptance as a practical way to quickly populate relational tables from open source materials (most commonly from the Web) (Etzioni et al., 2005).